复合视图在扩展主干集合时未获取"remove"事件



这是我的步骤:

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

  2. 使用扩展集合生成复合视图。

  3. Do extenedCollection.remove(xModel);

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

实际结果:Backbone 的 remove() 函数触发"remove"事件。木偶_initialEvents侦听"删除"事件,但在触发时不捕获删除事件,因此不执行函数"removeItemView"。

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

帮助?

为什么不使用内置的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

最新更新