2013-01-23 2 views
1

당신이 Backbone.js, 버전 0.9.2의 소스 코드에 보면,Backbone.js onModelEvent

"_onModelEvent"이 :

이 방법으로 모델에서 전달 이벤트의 책임 컬렉션 (버블 링).

그래서 컬렉션의 일부인 모델에서 ("set"으로) 변경하면 변경 이벤트가 발생하고 add 메서드에서 _onModelEvent 메서드가 모델에 바인딩 되었기 때문에 ("all "),이 메소드가 호출됩니다.

"파괴"이벤트를 유발하는 destroy 메소드가 있다는 것도 알 수 있습니다.

하지만 _onModelEvent의 첫 번째 줄에있는 작성자는 이벤트 이름이 "추가"또는 "제거"인지 확인합니다. 일반적으로 모델에 "추가"이벤트가 없습니까?

나는 이것을 이해하지 못한다.

누군가 나에게 설명 할 수 있습니까? 백본으로 사전

_onModelEvent: function(event, model, collection, options) { 
    if ((event == 'add' || event == 'remove') && collection != this) return; 

답변

1

에서

덕분에 당신은 nested model structures and collections을 만들 수 있습니다. 따라서 모델이 컬렉션 인 컬렉션을 만들 수 있습니다. annotated source에서 그래서

: 그 방법 대신에 체크입니다

_onModelEvent : 집합에서 모델이 이벤트를 발생 때마다 호출

내부 방법. 모델이 id를 변경할 때 인덱스를 업데이트해야합니다. 다른 모든 이벤트는 단순히 프록시를 통해 전달됩니다. 다른 컬렉션의 에서 발생한 "추가"및 "제거"이벤트는 무시됩니다.

그래서 모델로 컬렉션이있는 경우. 항목이 하위 컬렉션에 추가/제거 된 경우 add 또는 remove 이벤트를 위임하지 않습니다.이 경우 하위 컬렉션 만 변경되고 부모는 변경되지 않기 때문입니다.

+0

감사합니다. –