我有一个名为QueueItems的复合视图,然后是集合中每个元素的itemView,它允许我修改每个元素。每个元素都需要能够从多个标签集合中进行选择,例如:国家,公司等问题是我不确定如何将其嵌入到单个项目视图中。每次有itemView时我都不想打电话,所以我把集合放在复合视图中。但是我的问题在于我不知道如何访问它,如果我这样做,如何确定拉动该集合的ajax是否成功。
思考,建议;什么都有帮助。谢谢!
答案 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);
}
}