model.save ()에서 성공 콜백을 어떻게 트리거합니까?
this.model.save({
success: function(model, response){
console.log('success');
},
error: function(){
console.log('error');
}
})
모델은 저장을 처리하는 서버에 올바르게 게시되지만 성공 콜백은 발생하지 않습니다. 서버에서 무언가를 다시 보내야합니까?
save의 첫 번째 인수는 모델에 저장할 속성입니다.
this.model.save( {att1 : "value"}, {success :handler1, error: handler2});
일부 내용은 알 수없는 이유로, 위의 방법 중 어느 것도 나를 위해 일하지 않는다. 내 경우에는 API 만 히트하지 않았습니다.
그러나 나중에 이것을 검색하는 동안 나는 첫 번째 매개 변수 대신에 누군가가 시도한 이 링크에 부딪 혔습니다 .null
{}
this.model.save(null, {
success: function (model, response) {
console.log("success");
},
error: function (model, response) {
console.log("error");
}
});
그래서 이것은 나를 위해 일했습니다. 이것이 당신에게도 도움이되기를 바랍니다.
서버는 JSON 객체를 반환해야합니다. 응답이 JSON 객체가 아니면 콜백이 실행되지 않습니다.
성공을 위해 서버가 JSON 객체를 반환하지 않으면 다음 과 같이 dataType : "text" 옵션 으로 저장을 수행합니다 .
this.model.save([],{
dataType:"text",
success:function() {},
error:function() {}
});
이 옵션을 사용하면 응답에서 JSON을 기다리지 않고 텍스트를 기다리므로 콜백이 시작됩니다.
백본이 이미 이것에 의존하고 있으므로 밑줄 lib를 다음과 같이 사용할 수 있습니다. 저장의 첫 번째 인수에는 속성이 있거나 모델 자체를 저장하려는 경우 {}를 전달할 수 있습니다.
this.model.save({}, _.bind(function(model, response){
//Do whatever you want e.g.
this.collection.add(model)
}, this))
그래서 약간 혼란 스럽습니다. 저장 이벤트를 호출하려면 여전히 모든 속성을 전달해야합니까? 내 모델이 크면 어떻게 .. 모든 속성을 수동으로 설정하고 싶지 않습니다.
im을 model.save를 호출하고 다음을 시도합니다.
this.model.save(
{
success: function (model, response) {
console.log('model saved');
}
});
누군가이 게시물을 찾은 경우 내 질문에 답하기 위해 다음 작업을 수행했습니다.
this.model.save({ id: this.model.get('id') },
{
success: function (model, response) {
console.log("success");
},
error: function (model, response) {
console.log("error");
}
});
EDIT: I couldn't reply to you for some reason, but I can edit
but you don't have to set id: this.model.get('id')
you can just pass a blank object because a blank attribute just won't extend attributes, does nothing:
this.model.save({}, {
success: function (model, response) {
console.log("success");
},
error: function (model, response) {
console.log("error");
}
});
The following is the code that i am using for backbone model save.
this.model.save(model,{
success:function(model){
console.log("Saved Successfully");
},
error:function(model){
console.log("Error");
}
});
Cheers
Roy M J
For those that want to save a model, without updating the attributes, you can do the following:
model.once("sync", function(model, response, options){
//
});
model.once("error", function(model, response, options){
//
});
model.save();
In you initialize function, bind the sync method to a method you define (onSaveSuccess)
initialize: function (options) {
this.model.on('sync', _.bind(this.onSaveSuccess, this));
},
onSaveSuccess: function() {
console.log('saved');
this.render();
},
This way, any time you run this.model.save(), it will run the onSaveSuccess function as a callback if your sync is successful
참고URL : https://stackoverflow.com/questions/5757555/how-do-i-trigger-the-success-callback-on-a-model-save
'programing tip' 카테고리의 다른 글
Scala : 배열에 요소를 추가하는 가장 좋은 방법은 무엇입니까? (0) | 2020.08.09 |
---|---|
부모 컨테이너와 관련된 요소의 위치 / 오프셋을 얻습니까? (0) | 2020.08.09 |
Emacs에서 Linux의 다른 응용 프로그램으로 텍스트를 복사하는 방법 (0) | 2020.08.09 |
GNU 스크린 서바이벌 가이드 (0) | 2020.08.09 |
jquery는 쿠키에 json 데이터 객체를 저장합니다. (0) | 2020.08.09 |