2016-06-26 3 views
0
내가 리스너를 통해 백본 수집과 수집보기가

을 발사하기 전에 데이터를 가져 :프로세스 백본 컬렉션 이벤트

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

그리고 어떤 점에서 나는이 할 : 내가 원하는 것은 어떤을 할

myCollection.fetch({ 
    reset: true, 
    success: myCallback 
}) 

입니다

페이지에서 무슨 일이 일어나고 있는지에 따라 모델을 변경합니다 (일부는 삭제하거나 대체 할 수도 있음). 그리고 난 전에보기를 렌더링하기 전에 그것을하고 싶습니다. 현재 myCallback에서 작업하려하지만 렌더링 후 호출되는 것을 확인하십시오.

어떤 이벤트보다 먼저 가져온 데이터를 처리 할 수 ​​있습니까?

Backbone.Collection.extend({ 
parse: function(response){ 
    // modify response here 
    return response; 
} 
}); 

또는 어떤 이유로 모델은 다음 만든 후 실제 모달 인스턴스에서 코드를 실행하려면 : 이벤트가 같은 트리거하기 전에

답변

1

당신은 가져온 응답을 수정할 수집의 parse 방법을 사용할 수 있습니다 당신은 대신 수동으로 같은 이벤트 리스너의 렌더링 호출 할 수 있습니다

myCollection.fetch({ 
    reset: true, 
    success: function(collection, response){ 
    // modify response here 
    view.render(); 
    } 
}) 

또는 모달를 조작하고 통화처럼 렌더링 다른 콜백이 있습니다

,691를
Backbone.View.extend({ 
    initialize: function(){ 
    this.listenTo(this.collection, 'reset', this.preRender); 
    }, 
    preRender: function(){ 
    // manipulate models here 
    this.render(); 
    }, 
    render: function(){ 
    // Actual rendering here 
    } 
}); 
+0

나는 두 번째 해결책이 내가 필요한 것이라고 생각한다. 그러나 컬렉션 내부에서 볼 링크를 저장하는 대신 렌더링을 위해 일부 이벤트를 트리거하는 것이 더 좋지 않습니까? –

+0

@DenisK. * "내부 콜렉션을 볼 수있는 링크 저장"* - 아니요, 두 번째 예제는 myCollection.fetch ({내부 뷰, 라우터 또는 자체 참조) 링크를 사용하지 않는다고 가정합니다. 컬렉션 생성자가'myCollection'과 같은 컬렉션 인스턴스에 액세스 할 수있는 경우 디자인에 문제가 있습니다 ... 어쨌든 이벤트를 계속 사용하려면 대안을 추가했습니다. –