Backbone.js 컬렉션에서 fetch ()를 호출하면 어떤 이벤트가 트리거됩니까?
내 backbone.js 응용 프로그램에서는이 Trips collection
보관 유지 Trip models
에 노력하고있는 LocalStorage
. 에 Trips.create(form_attributes)
대한 여행을 만들고 저장하기 위해 전화를 걸 수 있습니다 Todos store
.
내가 처음 내 응용 프로그램을로드 할 때, 나는 전화 Trips.fetch({ success: trips_fetch_success })
및 trips_fetch_success
쇼가 있다는 응답 수신 Trip models
(가) 있음을 Trips collection
보유하고 있습니다.
refresh
및 change
이벤트를 에 바인딩하려고 시도 Trips collection
했지만 이러한 이벤트가 포착되지 않아 어떤 이벤트가 Trips.fetch
트리거 되는지에 대해 잘못된 생각을 가지고 있다고 생각 합니다.
내 질문 : 어떤 이벤트가 Trips.fetch
트리거 되어야 합니까? 그리고 이벤트가 컬렉션 또는 각 개인에서 트리거 Trip models
됩니까?
Collection.fetch()
호출 reset
차례로 '리셋'이벤트를 트리거 할, 성공. 컬렉션 재설정 이벤트에 대한 모든 구독자는 이벤트를 받아야합니다.
여기서 핵심은 "성공"입니다. 이 문제가 있었지만 백본이 내 오류 메시지를 조용히 삼키고 있음을 발견했습니다. 최소한에 기록하는 오류 처리기를 전달 console.log()
하고 무슨 일이 일어나는지 확인합니다.
trips.fetch({error: function() { console.log(arguments); }});
(참고 : 이전 버전의 backbone.js는 "재설정"대신 "새로 고침"을 트리거합니다.)
백본 1.0을 사용하는 경우 reset 이벤트와 바인딩하려면 fetch () 호출에서 reset : true를 전달해야합니다.
trips.fetch({reset: true});
백본 1.0부터 model.fetch ()는 '동기화'를 트리거합니다. 그것이 당신이 묶어야하는 것입니다.
다음은 'sync'이벤트가 발생하는 backbone.js 소스의 관련 부분입니다.
fetch: function(options) {
options = options ? _.clone(options) : {};
if (options.parse === void 0) options.parse = true;
var model = this;
var success = options.success;
options.success = function(resp) {
if (!model.set(model.parse(resp, options), options)) return false;
if (success) success(model, resp, options);
// HERE'S THE TRIGGER!
model.trigger('sync', model, resp, options);
};
wrapError(this, options);
return this.sync('read', this, options);
},
'Programing' 카테고리의 다른 글
OpenSSL 라이브러리를 사용하여 C ++에서 SHA 해시 생성 (0) | 2020.11.08 |
---|---|
postgresql의 Rownum (0) | 2020.11.08 |
Eclipse는 해결되지 않은 컴파일 문제가있는 클래스를 어떻게 만들 수 있습니까? (0) | 2020.11.08 |
Android 5.0 (L) 서비스 의도는 Google 애널리틱스에서 명시 적이어야합니다. (0) | 2020.11.08 |
인터페이스의 TypeScript 선택적 기능 (0) | 2020.11.08 |