2

백본 컬렉션에 문제가 있습니다. 나는 컬렉션 모든 이벤트를 들으려고 :컬렉션에 이벤트를 추가하기위한 백본 바인딩

this.collection.on('all', function(ev) { 
    console.log(ev); 
    }); 

그리고 수집 트리거 이벤트 만 나는이 같은 기록을 만들 때 :

this.collection.create({name: 'aloha'}); 

하지만 내가 직접 모델 인스턴스를 만들 때를 :

var room = new Room({name: 'hello'}); // this code not trigger any events on collection 
    room.save(); 

백본을 처음 사용하지만 두 번째 코드가 이벤트를 트리거해야한다고 생각합니다. 누군가 나를 도울 수 있습니까? 감사!

+1

여기 예제 및 검색 특정 부분 모델 컬렉션 http://www.sinbadsoft.com/blog/backbone-js-by-example-part-1/ –

답변

3

room 모델이 this.collection에 연결되지 않았으므로 (즉, 추가되지 않았기 때문에) 컬렉션에서 이벤트가 트리거되지 않습니다.

사용자가 정의한 가정하여 model과 유사 collection : 코드는 add에에 room 모델을 것 예상대로 작동 할 수

var Room = Backbone.Model.extend(); 

var Rooms = Backbone.Collection.extend({ 
    model:Room 
}); 

var rooms = new Rooms(); 

rooms.on('all',function(eventName) { 
    console.log(eventName); 
}); 

rooms 수집 등 :

var room = new Room({'name':'hello'}); 

// This will trigger the add event on the collection 
rooms.add(room); 

// save the model 
room.save(); 

다음은 위 코드 블록의 짧은 설명입니다.

var room = rooms.create({'name':'hello'}); 

여기에 동작을 나타내는 FIDDLE이 있습니다.

+0

설명해 주셔서 감사합니다. 모델이 콜렉션과 연관되어 있지 않다는 것을 단지 역으로 알 수 없습니다. ActiveRecord와 비슷한 점이 있다고 생각하십시오. 다시 한 번 감사드립니다. – ssbb

관련 문제