本帖最后由 WDYDXF 于 2014-01-14 11:00:21 编辑

解决方案 »

  1.   

    backbone忘记得差不多了。backbone有中文社区的,可以去那问一下。
      

  2.   

    因为你为body下的.btnClick元素绑定了2次onClick事件。jQuery里绑定几次就执行几次,所以你的回调执行了2次。
      

  3.   

    您好,那么view里的绑定事件,正确的写法应该怎么写?
      

  4.   

    viewA的时候new了View,对body元素绑了一次"click .btnClick": "onClick";
    viewB的时候又new了一次View,对body元素又绑了一次"click .btnClick": "onClick";
    所以绑定了2次。
    jQuery里可以对同一个元素绑定多次click事件。
      

  5.   

    <script>var CustomView = Backbone.View.extend({
        el: $('body'),
        events: {
            "click .btnClick": "onClick"
        },
        initialize: function () {
            this.render();
        },
        render: function () {
            this.$el.append("<div class='btnClick' style='background-color:red; width:100px;height:100px'></div>");
        },
        onClick: function () {
            console.log(this.cid+'onClick');
        }
    });var CustomModel = Backbone.Model.extend({
        defaults: {
            name: 'test'
        }
    });var modelA = new CustomModel();
    var modelB = new CustomModel();var viewA = new CustomView({ model: modelA });
    var viewB = new CustomView({ model: modelB });</script>
    顺着你的思路
    <script>var CustomView = Backbone.View.extend({
        el: $('body'),
        events: {
            "click .btnClick": "onClick"
        },
        initialize: function () {
            this.render();
        },
        render: function () {
            this.$el.append("<div class='btnClick' style='background-color:red; width:100px;height:100px'></div>");
        },
        onClick: function () {
            console.log(this.cid+'onClick');
        }
    });var CustomModel = Backbone.Model.extend({
        defaults: {
            name: 'test'
        }
    });var modelA = new CustomModel();
    var modelB = new CustomModel();var viewA = new CustomView({ model: modelA });
    var viewB = new CustomView({ model: modelB });</script>
      

  6.   

    啊,第二个发错了
    var CustomView = Backbone.View.extend({
        el: $('body'),
        events: function(){
         var key = 'click #'+this.cid;
         var obj={};
         obj[key]='onClick';
          return obj;
        },
        initialize: function () {
            this.render();
        },
        render: function () {
            this.$el.append("<div class='btnClick' id='" +this.cid +"' style='background-color:red; width:100px;height:100px'></div>");
        },
        onClick: function () {
            console.log(this.cid+'onClick');
        }
    });var CustomModel = Backbone.Model.extend({
        defaults: {
            name: 'test'
        }
    });var modelA = new CustomModel();
    var modelB = new CustomModel();var viewA = new CustomView({ model: modelA });
    var viewB = new CustomView({ model: modelB });
      

  7.   

    如果我的一个model对应一个view的,我叫做itemview ,我就不会用el赋值,用tagName:‘div’,使他们独立起来- -