여기에는 Backbone.js 모델 - 연락처 및 컬렉션 - 연락처가 모델 인 연락처가 있습니다. 필자는 컬렉션에서 모든 연락처를 나열하고 두 번째 모델에서 직접 단일 연락처를 표시하는 두 가지보기를 보았습니다. 그러나 모델을 직접 사용할 때 'change'이벤트를 콜렉션과 함께 사용하는 동안 'change'이벤트를 발생시킬 수 있습니다 (모델의 '모든'이벤트)조차 발생하지 않습니다. 컬렉션과 함께 작동하도록 여기에 추가 바인딩이 누락 되었습니까?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를 업데이트합니다. 당신이 컬렉션 fetch
을 수행 할 때
나를 위해 일합니다. (http://jsfiddle.net/ambiguous/xUSLE/), 그게 뭐니 뭐니? –
add() 대신 큰 차이가 있다고 생각합니다. 서버에서 JSON을 가져 오기 위해 fetch를 사용하고 있습니다. 하지만 fetch()는 모델과 컬렉션에서 다르게 동작합니까? – Saneef
['Collection # fetch'] (http://documentcloud.github.com/backbone/#Collection-fetch)는 새로운 모델 인스턴스를 생성 할 것이고, 기존 모델은 컬렉션에서 제거되어 변경 이벤트가 없게됩니다; ['Model # fetch'] (http : //documentcloud.github.co.kr/backbone/# Model-fetch)은 모델을 현재 위치로 변경하고 변경 이벤트를 트리거합니다. 콜렉션에서'fetch'를 호출하고 있습니까? –