Marionette LayoutView区域共享CollectionView

Marionette LayoutView regions share CollectionView

本文关键字:CollectionView 共享 区域 LayoutView Marionette      更新时间:2024-02-11

我有一个由两个区域组成的LayoutView。这两个区域共享相同的集合/集合视图,唯一的区别是集合调用的API端点

 initialize: function () {
     // setup collection for scheduled mailings
     this._scheduledView = new MailingsCollectionView({
         collection: new MailingsCollection()
     });
     this._scheduledView.collection.url = '/api/mailings?is_scheduled=true&mailing_types=m';
     // setup collection for sent mailings
     this._sentView = new MailingsCollectionView({
         collection: new MailingsCollection()
     });
     this._sentView.collection.url = '/api/mailings?mailing_statuses=c&mailing_types=m';
     this.listenTo(this._scheduledView.collection, 'change:checked', this.setMailing)
 },

与其为每个区域写this.listenTo()行,我如何一次登录到共享集合?

无法访问多个listenTo对象,但是您可以中断一些逻辑,使其与单个listenTo调用一样干净。


initialize: function()
{
  this._scheduledView = this.makeCollectionView('/api/mailings?is_scheduled=true&mailing_types=m');
  this._sentView = this.makeCollectionView('/api/mailings?mailing_statuses=c&mailing_types=m');
},
makeCollectionView: function(url)
{
  var collection = new MailingsCollection({url: url}),
      collectionView = new MailingsCollectionView({collection: collection});
  this.listenTo(collection, 'change:checked', this.setMailing);
  return collectionView;
}