多个项目视图的存储集合:木偶

时间:2015-05-05 15:26:21

标签: javascript ajax backbone.js marionette

我有一个名为QueueItems的复合视图,然后是集合中每个元素的itemView,它允许我修改每个元素。每个元素都需要能够从多个标签集合中进行选择,例如:国家,公司等问题是我不确定如何将其嵌入到单个项目视图中。每次有itemView时我都不想打电话,所以我把集合放在复合视图中。但是我的问题在于我不知道如何访问它,如果我这样做,如何确定拉动该集合的ajax是否成功。

思考,建议;什么都有帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将集合存储在全局可访问的位置。我看到有人在引导他们的应用程序时将它们附加到Application对象。

App.States = new StatesCollection();
App.States.fetch();

如果您已在CompositeView对象中创建此集合,则可以使用childViewOptions参数将其传递给每个子集。

var QueueItems = Marionette.CompositeView.extend({
  childViewOptions: {
    states: this.states
  },

  initialize: function() {
     this.states = new StatesCollection();
     this.states.fetch();
  }
}

然后你可以在childView初始化中抓住它。

var QueueItem = Marionette.ItemView.extend({
  initialize: function(options) {
    this.states = options.states;
  }
}

至于担心它们是否被加载,你应该只是在ItemView中添加一个监听器,以便在同步或重置集合时进行渲染。然后,只要您获取或加载集合,它就会重新渲染。

var QueueItem = Marionette.ItemView.extend({
  initialize: function(options) {
    this.states = options.states;
    this.listenTo(this.states, 'sync reset', this.render);
  }
}