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});
何らかのunknown理由のため、上記の方法はどれもうまくいきませんでした。私の場合、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を使用できます。 saveの最初の引数は属性を持っている必要があります。モデル自体を保存する場合は{}を渡すだけです。
this.model.save({}, _.bind(function(model, response){
//Do whatever you want e.g.
this.collection.add(model)
}, this))
少し混乱しています-保存イベントを呼び出すためにすべての属性を渡す必要がありますか?モデルが大きい場合はどうなりますか。すべてのプロパティを手動で設定したくない
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");
}
});
_
編集:何らかの理由で返信できませんでしたが、編集できます
ただし、idを設定する必要はありません:this.model.get('id')
空白のオブジェクトを渡すことができます。空白の属性は属性を拡張しないだけで、何もしないからです。
_this.model.save({}, {
success: function (model, response) {
console.log("success");
},
error: function (model, response) {
console.log("error");
}
});
_
以下は、バックボーンモデルの保存に使用しているコードです。
this.model.save(model,{
success:function(model){
console.log("Saved Successfully");
},
error:function(model){
console.log("Error");
}
});
乾杯
ロイ・M・J
関数を初期化する際に、syncメソッドを定義したメソッドにバインドします(onSaveSuccess)
initialize: function (options) {
this.model.on('sync', _.bind(this.onSaveSuccess, this));
},
onSaveSuccess: function() {
console.log('saved');
this.render();
},
これにより、this.model.save()を実行するたびに、同期が成功した場合にコールバックとしてonSaveSuccess関数が実行されます
属性を更新せずにモデルを保存する必要がある場合は、次を実行できます。
model.once("sync", function(model, response, options){
//
});
model.once("error", function(model, response, options){
//
});
model.save();