i具有称为queueItems的复合视图,然后在集合中为每个元素提供一个itemView,可以让我修改每个元素。每个元素都需要能够从多个标签集合中进行选择,例如国家,公司等。问题在于我不确定如何将其嵌入单个项目的视图中。我不想每次都有itemView时打电话,所以我将集合放在复合视图中。但是我的问题是我不知道如何访问它,如果我这样做,如何确定ajax是否取得了收藏。
思想,建议;任何事情都是有帮助的。谢谢!
您可以将集合存储在全球可访问的位置。我已经看到人们在引导其应用程序时将其附加到其应用程序对象上。
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;
}
}
至于担心它们是否已加载,您应该只将侦听器添加到您的项目视图中即可渲染收集或重置的任何时候。然后,随着您获取或加载集合时,它只会重新渲染。
var QueueItem = Marionette.ItemView.extend({
initialize: function(options) {
this.states = options.states;
this.listenTo(this.states, 'sync reset', this.render);
}
}