【问题标题】:CompositeView not get "remove" event when extending the Backbone collection扩展 Backbone 集合时,CompositeView 未获得“删除”事件
【发布时间】:2013-10-07 08:57:20
【问题描述】:

这是我的步骤:

  1. 声明 Backbone colleciton 的扩展集合:extendedCollection = $.extend({},backboneCollection, decorator);

  2. 使用扩展集合构建复合视图。

  3. 做extendedCollection.remove(xModel);

预期结果: 复合视图将捕获 remove 事件,并将从复合视图中删除相关的项目视图。

实际结果:Backbone 的 remove() 函数触发“remove”事件。 _initialEvents 中的 Marionette 监听“remove”事件,但在触发时未捕获 remove 事件,因此不执行函数“removeItemView”。

注释:用代码extendedCollection = $.extend(backboneCollection, decorator);一切正常。但是在扩展原始骨干集合时,我必须创建新对象。

帮助?

【问题讨论】:

    标签: javascript backbone.js marionette


    【解决方案1】:

    为什么不使用内置的Backbone.Collection.extend 功能?它专为您所说的用例而设计。

    // Extend Backbone types with the Backbone.extend function
    var MyCollectionType = Backbone.Collection.extend(MyDecorator);
    
    var myCollection = new MyCollectionType(models);
    var myCompositeView = new MyAwesomeCompositeView({collection : myCollection});
    
    // Not necessary.
    myCompositeView.onItemRemoved = function () {
      console.log(arguments);
    };
    
    myCollection.remove(myModel); // Event is handled by composite view
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多