2012-06-06 2 views
3

모델의 데이터를 가져올 때 "성공"콜백의 목적과 "변경"이벤트의 메서드에 바인딩하는 목적은 무엇입니까?백본 "성공"콜백 대 모델 "변경"이벤트 바인딩 목적

"성공"콜백

this.model.fetch({ 
    url: '...'. 

    success: function(response) { 
    ... 
    } 
}); 

대 모델 그 문제에 대해 "성공"또는 "오류"를 사용하는

this.model.bind("change", this.attributesChanged); 

답변

2

주된 이유 바인딩 "변화"입니다 "변경"은 모델의 성공적인 변경시에만 실행되므로 응답을 기반으로 기능을 실행해야합니다. 어떤 이유로 가져 오기가 실패하면 "변경"이 실행되지 않습니다. 콜백을 사용하면 좀 더 세밀한 제어가 가능합니다. 그것은 말하자면, 당신이 응답에 응답하고 싶을 때 개인적으로 선호하는 것입니다. 필자가 생각하기에 성공적인 CRUD 작업에 대한 응답으로 뭔가를하는 데 관심이 있다면 오류 만 무시하기 때문에 "변경"을 듣는 것이 전적으로 적절합니다.

7

일반적으로 나는 fetch-success 콜백을 모델 자체의 외부에서 호출하고 모델에서 트리거 된 추가 success 함수 콜백을 원할 때 사용합니다.

또한 "변경"이벤트가 서버에 저장되지 않아도 계속 트리거 될 수 있으므로 CRUD 이벤트에주의해야합니다. 모델 변경시 "변경"이 트리거됨을 기억하십시오. 버전 0.9.0부터이 문제를 해결하기 위해 "동기화"이벤트가 추가되었습니다. 이는 모델의 상태가 서버와 성공적으로 동기화 될 때마다 트리거됩니다.

0

'변경'이벤트는 모델 속성을 변경하거나 서버에서 데이터를 가져 오는 데 사용되는 양식에 사용자가 입력하는 등의 방법으로 모델이 업데이트되는 경우에 발생합니다.

fetch에서 성공 콜백은 서버에서 페치 한 후에 분명히 호출됩니다.

그래서 '양방향'변경이 아닌 가져 오기로 인한 모델 변경에만 응답하려면 변경 이벤트가 아닌 성공 핸들러를 사용하십시오.