2012-05-25 2 views
6

여기에 doc에 따르면 : http://documentcloud.github.com/backbone/#FAQ-events 컬렉션은 서버와 컬렉션을 동기화 할 때 동기화 이벤트가 발생합니다. 콜렉션에서 fetch 메소드를 호출하고 동기화 이벤트를 기다리려고 시도하지만 결코 발생하지 않습니다. 추가 이벤트가 발생하지만 해당보기를 업데이트하기 위해 컬렉션의 모든 항목을 동기화 한 후에 하나의 이벤트 만 필요합니다. 이 사건을 해고하는 다른 방법이 있습니까?컬렉션의 Backbone.js 동기화 이벤트

답변

2

"동기화"이벤트는 모델을 변경할 때만 발생한다고 생각합니다. 따라서 모델을 생성, 업데이트 또는 삭제하면 "동기화"이벤트가 발생합니다.

귀하의 경우에는 귀하가 컬렉션에서 "재설정"이벤트를 듣고 싶다고 생각합니다.

편집 : {add:true} 옵션을 설정하는 경우 모든 모델을 추가 한 후에 실행되는 단일 백본 이벤트가 없습니다.

  1. 는 그냥 add 이벤트를 수신하고 그것이 _.debounce() 기능을 사용하여 디 바운스 된 처리기를 사용하여 단일 이벤트를 에뮬레이트 반복
  2. 라고 기대 : 당신은 몇 가지 옵션이 있습니다.
  3. fetch()의 반환 값은 jQuery XMLHttpRequest 객체입니다. 그것은 jQuery Deferred 인터페이스를 구현합니다. 그래서 그 마무리를들을 수있었습니다. 예를 들어 :

    myCollection.fetch({add:true}).done(function(){ 
        myView.render(); //or whatever 
    }); 
    
+0

fetch를 add : true 매개 변수로 호출하기 때문에 Reset 이벤트가 내 필요에 맞지 않습니다. –

5

이 솔루션은 방법을 가져올 PARAM로 전달 성공 '콜백 maunually 동기화 이벤트를 해고하는 것입니다.

this.collection.fetch({add: true, success: function(collection, response){ 
      collection.trigger('sync'); 
}}); 
+1

백본 0.9.9에서 성공 콜백시 동기화 트리거 추가가 더 이상 필요하지 않습니다. http://backbonejs.org/#changelog에서 Backbone.sync 내의 "동기화"및 "오류"이벤트가 통합되었습니다. 이제는 성공 또는 오류 콜백의 존재 여부에 관계없이 트리거됩니다. –

관련 문제