在这里,我有一个Backbone.js模型 - 联系人和一个集合 - 联系人作为模型。我有两个视图,其中一个我使用collection来列出所有联系人,另一个模型直接显示一个联系人。但是,当我直接使用模型时,我能够在使用集合中的'change'事件时触发'change'事件(即使模型中的'all'事件)也未被触发。我是否在这里错过了一些额外的绑定,以使它与集合一起工作?Backbone.js:模型事件在集合中使用时未被触发
var Contact = Backbone.Model.extend({
defaults: {
id: 0,
urlDisplayPicBig: '',
urlDisplayPicSmall: ''
},
initialize: function() {
this.bind('change', this.doSomething);
},
generateUrls: function() { //earlier doSomething()
...
}
...
});
var Contacts = Backbone.Collection.extend({
model: Contact,
...
});
更新 在使用我要跑generateUrls都收集&单一模型实例()基于该模型的“身份证”更新urlDisplayPicBig & urlDisplayPicSmall。
适用于我(http://jsfiddle.net/ambiguous/xUSLE/),你在做什么不同? –
我认为最主要的区别是代替add()我使用fetch从服务器获取JSON。但是,fetch()在模型和集合中的表现有所不同吗? – Saneef
['Collection#fetch'](http://documentcloud.github.com/backbone/#Collection-fetch)将创建新的模型实例,将现有模型从集合中移除,因此没有更改事件; ['型号#fetch'](HTTP://documentcloud.github。com/backbone /#Model-fetch)就地更改模型并确实触发更改事件。你在集合上调用'fetch'? –