Collections 从主干中的模型查找集合
我正在更改一个模型视图的状态,我想知道用什么方法可以清楚地找到模型引用的集合 本质上,它是这样工作的:当一个模型被触发打开时,它需要首先上升一个级别,让集合查询其他模型,并将当前打开的任何模型打开到关闭。现在,我正在向每个模型视图传递一个对它所来自的集合视图的引用,以便它可以从那里查询集合,但我觉得这可能是一种不好的做法 来自: 为方便起见,在集合中的模型上触发的任何事件也将直接在集合上触发 因此,如果在集合中的模型上更改属性Collections 从主干中的模型查找集合,collections,backbone.js,models,Collections,Backbone.js,Models,我正在更改一个模型视图的状态,我想知道用什么方法可以清楚地找到模型引用的集合 本质上,它是这样工作的:当一个模型被触发打开时,它需要首先上升一个级别,让集合查询其他模型,并将当前打开的任何模型打开到关闭。现在,我正在向每个模型视图传递一个对它所来自的集合视图的引用,以便它可以从那里查询集合,但我觉得这可能是一种不好的做法 来自: 为方便起见,在集合中的模型上触发的任何事件也将直接在集合上触发 因此,如果在集合中的模型上更改属性active,则模型和集合都将触发“change:active”事件。
active
,则模型和集合都将触发“change:active”
事件。您可以让集合自行侦听相应的“更改”
事件:
initialize: function() {
_.bindAll(this, 'active_changed');
this.on('change:active', this.active_changed);
},
active_changed: function(active_m) {
if(!active_m.get('active'))
return;
this.each(function(m) {
if(m.id != active_m.id) {
console.log('Updating ' + m.id);
m.set({ active: false }, { silent: true });
}
});
}
上的{silent:true}
只是为了避免从内部簿记中生成更多事件;这在您的情况下可能合适,也可能不合适
演示:
只有一个模型处于“打开”状态是集合级别属性,因此集合可以为其所有模型管理此属性。来自:
为方便起见,在集合中的模型上触发的任何事件也将直接在集合上触发
因此,如果在集合中的模型上更改属性active
,则模型和集合都将触发“change:active”
事件。您可以让集合自行侦听相应的“更改”
事件:
initialize: function() {
_.bindAll(this, 'active_changed');
this.on('change:active', this.active_changed);
},
active_changed: function(active_m) {
if(!active_m.get('active'))
return;
this.each(function(m) {
if(m.id != active_m.id) {
console.log('Updating ' + m.id);
m.set({ active: false }, { silent: true });
}
});
}
上的{silent:true}
只是为了避免从内部簿记中生成更多事件;这在您的情况下可能合适,也可能不合适
演示:
只有一个模型处于“打开”状态是集合级别属性,因此集合管理其所有模型的状态是有意义的。Mu,您可以继续保存一天。非常感谢。穆,你一直在节省时间。非常感谢。