2013-08-07 4 views
0

나는 사용자가 모달보기를 표시하는 버튼을 클릭 할 수 종류의 목록보기가컬렉션은 너무 빨리

(백본 0.9.10 사용) 추가 이벤트를 함수 발사를 만듭니다. 목록보기에는 목록에 포함 된 항목의 양을 보여주는 카운터가 있습니다. 모달보기에서 단추를 클릭하면 두보기로 전달되는 모음에서 create이 실행됩니다. 컬렉션이 기회를하기 전에, (워드 프로세서에 따라, 그것이 있어야로)

renderCount: function() { 
    // Container for model count 
    var $num = this.$el.find('.num'); 

    if ($num.length > 0) { 
     // 'count' is a value returned from a service that 
     // always contains the total amount of models in the 
     // collection. This is necessary as I use a form of 
     // pagination. It's essentially the same as 
     // this.collection.length had it returned all models 
     // at once. 
     $num.html(this.collection.count); 
    } 
} 

그러나, add 즉시 해고 할 것 같다 : 이것은 차례로이 기능을 실행 목록보기에서 add 이벤트를 발생시킵니다 모델 수를 업데이트합니다. 나는 sync을 들여다 보았다. 그러나 그것은 아무것도하지 않는 것처럼 보였다.

전에을 호출하기 전에 컬렉션을 업데이트 할 수있는 방법은 무엇입니까? renderCount?

여기 참조를 위해, 목록보기를 initialize 기능입니다 :

initialize: function (options) { 
    this.collection = options.collection; 
    this.listenTo(this.collection, 'add remove reset', this.renderCount); 

    this.render(); 
} 

편집 : 이 밝혀 내가 모달 뷰에서 success에 컬렉션을 재 취득 잊고 있었다.

+1

어떻게'count' 속성을 업데이트합니까? AJAX 요청이 있으십니까? – nikoshr

+0

@nikoshr 고맙습니다. 이것은 제가 잊고있는 것을 암시합니다. 즉, 성공을 창출하기 위해 컬렉션을 업데이트하기위한 가져 오기입니다. – jlowgren

답변

0

내가 모달 뷰에서 success에 컬렉션을 재 취득 잊고 있었다 밝혀 .

0
$num.html(this.collection.count); 

shoule가 될 :

$num.html(this.collection.size()); 

Backbone.Collection이 밑줄에서 수입 한 방법을 사용, 여기 목록입니다 : http://backbonejs.org/#Collection-Underscore-Methods

+0

'count'는 컬렉션의 맞춤 변수입니다. 이러한 맥락에서 그 목적은 동일하지 않습니다. – jlowgren

관련 문제