2014-09-10 2 views
0

관리 할 "항목"목록이 있습니다. 목록은 화면 하단에 표시되며 입력 양식은 페이지 상단에 표시됩니다. 각 항목에는 "entryDate"속성이 있습니다.생성시 백본 콜렉션을 다시 가져옵니다.

목록은 특정 기간 (예 : 2014 년 8 월)에 바인딩되며 선택한 기간 사이의 항목 만 표시됩니다. 항목의 페이지가 매겨집니다. 무한 스크롤과 함께 페이지 당 X 개의 항목을 표시합니다. 목록의 정렬 순서는 entryDate에서 내림차순이며 가장 최근 항목이 먼저 표시됩니다.

entryDate가 항상 currentDate 인 경우 모든 것을 다시 렌더링하지 않고 목록에 새 행을 추가 할 수 있지만 그럴 수는 없습니다. 입력 한 날짜가 선택한 기간에 포함되는지 여부를 확인하는 것은 과도하다고 생각합니다. 목록을 다시로드해야 하는지를 아는 것입니다.

이제 성공적으로 삽입 될 때마다 목록을 가져 오거나 재설정하여 쉽게 만들고 싶습니다. 그러나 ... 나는 그것을 할 수 없다.

A는 내보기 코드 니펫이 제대로 작동하지 않는, 목록이 다시 인출되지

initialize: function() { 

     this.collection = new EntriesCollection(); 
     this.fetchTransactions(); 
     this.listenTo(this.collection, 'reset', this.render); 
     this.listenTo(this.collection, 'add', this.fetchTransactions); 

     this.rowViews = []; 
     this.render(); 
    }, 

fetchTransactions: function() { 
     this.collection.fetch({ reset:true }); 
    }, 

addEntry: function() { // on form submit 

     var entryData = {}; 
// load data from form... 
     this.collection.create(entryData); 
    }, 

.

가져 오기 전이나 후에 트리거 할 '추가'수집 이벤트가 있습니까? 그들은 단지 그들 모두를 로그 아웃하는 것입니다 화재 때/이벤트를 알아내는 경우

this.listenTo(this.collection, 'sync', this.render); 
+0

새 모델을 컬렉션에 추가하는 코드를 추가 할 수 있습니까? –

+0

그냥 this.collection.create (entryData); –

+2

아마도 {wait : true}를 사용하여 –

답변

1

당신이 찾고있는 것은 Wait 옵션입니다.

http://backbonejs.org/#Model-savehttp://backbonejs.org/#Collection-create

create가 성공적으로 서버에 의해 인정 될 때 add 만 트리거됩니다 확인됩니다 create{wait:true} 옵션을 제공에 잘 설명되어 있습니다. 정상적인 동작은 모델이 컬렉션에 추가 된 후 서버로 전송된다는 것입니다. wait 명령은이를 변경합니다.

0

봅니다이 줄을 변경합니다.

그래서 당신은

events: { 
    "all": "log" 
} 

log: function(e) { 
    console.log e; 
} 

처럼 뭔가를 할 수 그리고 당신은 불 때/각 이벤트를 볼 수 있습니다. 내가 어떤 이벤트를 첨부할지 알아 내려고 할 때 매우 유용하다고 생각한다.

1

와 또 다른 유용한 비트를

this.listenTo(this.collection, 'reset', this.render); 

:

관련 문제