Backbone.js를 시험해보고 있는데, 원격 API를 호출하는 것이므로 the documentation을 이해하면 Backbone.sync를 재정의 할 수 있어야합니다.Backbone.sync를 재정의하는 방법?
문서 자체에서이를 수행하는 방법에 대한 예제가 없으며 백본에 대한 Google 그룹이없는 것으로 나타났습니다 ... 누군가가 이것을 수행하는 예를 지적 할 수 있습니까?
Backbone.js를 시험해보고 있는데, 원격 API를 호출하는 것이므로 the documentation을 이해하면 Backbone.sync를 재정의 할 수 있어야합니다.Backbone.sync를 재정의하는 방법?
문서 자체에서이를 수행하는 방법에 대한 예제가 없으며 백본에 대한 Google 그룹이없는 것으로 나타났습니다 ... 누군가가 이것을 수행하는 예를 지적 할 수 있습니까?
그들이 로컬 스토리지의 대안 Backbone.sync
을 덮어이 주석 소스의 예를 살펴
기본적으로 Backbone.sync 4 개 인수를받는 함수이어야한다 :
Backbone.sync = function(method, model, options) { };
당신을 method
의 성공 여부에 따라 options.success
또는 options.error
중 하나를 실행해야합니다. 방법은 형식에 있습니다
"create"
: 당신이"read"
서버의 모델을 만드는 것이 예상 : 서버에서이 모델을 읽고 그것을"update"
를 반환 할 것으로 예상 : 예상이 업데이트하는 것이"delete"
인 서버의 모델 : 서버에서 모델을 삭제해야합니다.당신은 그 4 개 메소드를 구현하고 이들 만 Backbone.sync
이 구현해야하는 것들 물론 당신의 "server"
을 위해 원하는대로 정의 할 필요가있다. methods
을 더 구현할 수 있으며 더 많은 매개 변수를 success
에 다시 전달할 수 있지만이 방법을 사용하지 않는 것이 가장 좋습니다.
Backbone.sync
과 똑같은지 확인하는 것이 가장 좋으므로 구현보다는 인터페이스로 프로그래밍하십시오. 아웃 전환 할 경우
이 [편집] 또한
은 당신이 할 수 있습니다 않습니다 당신이되지 않습니다 로컬 스토리지를 하나의 확장 된 Backbone.sync "를 일치하도록 스스로를 확장 할 말에 대한 Backbone.sync
수정 sync
의 여러 구현을 사용 Backbone.sync
에 대한 모든 참조 actaully (this.sync || Backbone.sync)
그래서 그냥 같은 것을 할 필요가 :.
var MyModel = Backbone.Model.extend({
...
"sync": myOwnSpecificSync,
...
});
Backbone.sync
모든 모델은 일하지 않는 한 사용 단지 기본 전역이다 e 모델에는 sync
메소드가 특별히 설정되어 있습니다.
이 답변은 조금 늦었고 @Raynos의 답변은 훌륭하지만 조금 다르게 해본 결과 여러분이나 다른 사람이 API를 사용하려고 할 때 유용 할 수도 있습니다. 등뼈.
Backbone.sync를 재정의하는 대신 Ajax 요청이 있었기 때문에 Backbone.ajax을 무시했습니다.
// Set the default implementation of `Backbone.ajax` to proxy through to `$`.
Backbone.ajax = function() {
var args = Array.prototype.slice.call(arguments, 0);
// Here, I add the OAuth token (or any other token)
// But before, I check that data exists, if not I add it
if (args[0]['data'] === undefined) {
args[0]['data'] = {};
}
args[0]['data']['token'] = 'any_api_token_here';
return Backbone.$.ajax.apply(Backbone.$, args);
};
나는 일반적으로 난 단지 동기화 특정 속성 필요할 때 백본의 sync
메소드를 오버라이드 (override) 할 필요가 :
다음은 예입니다. 일반적인 구현 방법은 다음과 같습니다.
sync: function (method, model, options) {
options.data = _.pick(this.attributes, 'foo', 'bar', 'baz');
return Backbone.sync.call(this, method, model, options);
}
그 모델 또는 컬렉션으로 이동합니다. –
부전공자 제안 : 마지막 줄을'Backbone.sync.apply (this, arguments); '로 변경하는 것은 어떨까요? 예를 들어, "sync"의 재정의 된 버전에서 "options"인수를 생략하려는 경우 약간 더 유연합니다. – Lochlan
이 질문에 대한 미래의 발견자를 위해 뭔가 다른 것들이 있습니다 : _ 반드시 Backbone.sync_a la를 반환하십시오 http://backbonejs.org/docs/backbone.html#section-62 – Lochlan
Google 그룹이 없으면 freenode의 #documentcloud room을 확인하고 질문을하십시오. 대답을 얻는다면 여기로 돌아와서 자신의 질문에 대답하십시오. 거기에는 많은 훌륭한 토론이 있으며, 그것을 체계화하고 이후에 오는 사람들을 검색 할 수있게하는 것이 좋습니다. –
FYI : http://groups.google.com/group/backbonejs –