【问题标题】:marionette collection event not firing木偶收集事件未触发
【发布时间】:2019-08-05 20:21:33
【问题描述】:

当集合在初始化函数中定义时,Marionette 集合事件不会触发。 例如:

  collectionEvents: {
    update: 'onCollectionUpdate',
    change: 'onCollectionChange',
    error: 'onCollectionError',
  },

initialize(opts) {
    this.collection = new ListCollection({...});
}

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

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

是否有这个原因我需要在初始化函数中定义集合,因为我有数据被传递给集合需要的构造函数

【问题讨论】:

    标签: javascript model-view-controller backbone.js marionette


    【解决方案1】:

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

    const view = new CollectionView({
       collection: new ListCollection(/*data you pass to initialize*/),
    });
    

    或在视图的initialize

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

    我不希望 Marionette 在您添加 collection 属性以在随机时间点查看并相应地创建事件绑定时进行跟踪。

    【讨论】:

    • 我能够通过在初始化中执行 this.delegateEvents() 来使其工作。您是否知道您提到的解决方案和执行 delegateEvents 之间的正确方法?
    • 就我个人而言,我不会使用this.delegateEvents(),因为它更像是一种内部方法,我们会调用它两次(一次由木偶在创建视图实例时调用,然后一次由我们在初始化时调用)我只是得到第一个电话识别集合...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    相关资源
    最近更新 更多