Javascript 木偶收集事件未触发

Javascript 木偶收集事件未触发,javascript,model-view-controller,backbone.js,marionette,Javascript,Model View Controller,Backbone.js,Marionette,当集合在initialize函数中定义时,木偶收集事件不会触发。 例: 但当集合被定义为compositeView类上的属性时,它可以正常工作 collection: new ListCollection({...}), collectionEvents: { update: 'onCollectionUpdate', change: 'onCollectionChange', error: 'onCollectionError', }, 有什么原因吗?我需

当集合在initialize函数中定义时,木偶收集事件不会触发。 例:

但当集合被定义为compositeView类上的属性时,它可以正常工作

  collection: new ListCollection({...}),
  collectionEvents: {
    update: 'onCollectionUpdate',
    change: 'onCollectionChange',
    error: 'onCollectionError',
  },

有什么原因吗?我需要在initialize函数中定义集合,因为我将数据传递给集合所需的构造函数

您可以将空集合传递给视图,以便在创建视图实例时正确进行事件绑定,然后在集合中填充数据。或者只是传入包含数据的集合

const view = new CollectionView({
   collection: new ListCollection(/*data you pass to initialize*/),
});
或者在视图的
初始化中

initialize(opts) {
  this.collection.reset(options.data);
}

我不希望当您在随机时间点添加
集合
属性以查看,然后相应地创建事件绑定时,木偶会进行跟踪。

我能够通过在初始化中执行此操作使其工作。delegateEvents()。您知道您提到的解决方案和执行delegateEvents之间的区别吗?就我个人而言,我不会使用
this.delegateEvents()
,因为它更像是一个内部方法,我们会调用它两次(一次是在创建视图实例时通过木偶调用,另一次是在初始化时通过我们调用)我刚接到第一个电话,确认收藏。。。
initialize(opts) {
  this.collection.reset(options.data);
}