2014-09-02 3 views
2

EDIT 1 :이 질문은 더 이상 유효하지 않습니다. 자세한 내용은이 질문 끝에 EDIT # 2를 확인하십시오.백본 Model.save는 jqxhr 대신 undefined를 반환합니다.

백본 문서는 유효성 검사에 성공하면 Backbone.Model.save 함수가 jqXHR 개체를 반환하고 그렇지 않으면 false를 반환한다고 말합니다. 따라서 검증 메소드가 정의되어 있지 않으면 model.save 메소드는 jqXHR을 리턴해야하지만 실제로 'undefined'를 리턴합니다. model.fetch 잘 작동하고 jqXHR 개체를 반환합니다.

jqXHR 개체는 다른 deffered 개체와 연결하는 데 유용합니다. 여러 모델에서 저장을 호출하고 모든 저장 메소드가 완료되면 UI를 업데이트하려고합니다. 내가 여기

$.when(promise1,promise2,.....) 
.done().then(function(){ 
    /* some callback code here */ 
}) 

처럼 뭔가를 원하는 것은 워드 프로세서 말 것입니다

저장 model.save ([속성], [옵션])
저장 데이터베이스에 모델 (또는 대체 지속성 계층)을 Backbone.sync에 위임하여 검증이 성공하면 jqXHR을 리턴하고 그렇지 않으면 false를 리턴합니다.

여기에 내 코드

var x = new Backbone.Model(); 
x.url = "https://stackoverflow.com/a/valid/url"; 
var y = x.save({key1: "value1"}); 
var z = x.fetch(); 
console.log(typeof(y)); 
console.log(typeof(z)); 

콘솔 출력이

undefined 
a jqXHR object 

대신의 jqXHR 객체를 로깅하는 것은,이 콘솔에 "정의되지 않은"기록이다. 누군가 이걸로 나를 도울 수 있습니까?

EDIT 2 : 내 코드에서 Backbone.sync 메서드를 재정의하는 것을 잊었으며 재정의 한 메서드에서 아무 것도 반환하지 않았습니다. model.save는 Backbone.sync (또는 자체의 사용자 정의 동기화 메소드)에 위임하므로 save 메소드는 'undefined'를 반환합니다.

+4

당신이 보여준 것을 가지고 저를 위해 일하십시오. http://jsfiddle.net/nikoshr/cqc88fkx/ – nikoshr

+0

ajax 호출이있을 때 dev 도구에서 응답을 반환 무엇입니까? – kinakuta

+0

@kinakuta : 내가받는 응답은 서버에서 보내고있는 json입니다. 그것은 잘 작동합니다. 그냥 'save'메서드가 jqXHR을 반환하지 않는다는 것입니다. – GunnerFan

답변

4

내 코드에서 Backbone.sync 메서드를 재정의하는 것을 잊었으며 재정의 한 메서드에서 아무 것도 반환하지 않았습니다. model.save가 Backbone.sync에 위임 한 이후 save 메소드가 'undefined'를 반환했습니다. jqXHR 객체를 반환하도록 코드를 수정했습니다. 이제 모든 것이 잘 돌아갑니다.

+0

저장된 내 하루 ... –

관련 문제