[英]How to save with backbone.js without specifying which attributes but with a callback
我想將修改后的模型保存到數據庫中(之前設置)。 如果保存成功重定向到另一個頁面(例如,可以是任何其他操作)。
Model.save可以有兩個可選屬性。 第一個是屬性的哈希,第二個是選項(如成功和錯誤回調)。 http://backbonejs.org/#Model-save
somemodel.set({foo: 'bar'});
//lots of other logic and misc steps the user has to do
somemodel.save(); //on success should go here
由於屬性已經設置,我只需要回調。
過去我做過:
somemodel.save(somemodel.toJSON(), {
success: function() {
//other stuff
}
);
或者將值再次傳遞給save方法
somemodel.save(
{ foo: this.$('input').val()},
{ success: function(){}
);
我正在尋找一種方法來清理它。 文檔說明,如果有新屬性,模型將觸發更改狀態。 但是我想要重定向用戶(保存新內容或舊/未更改)。
這不存在:
somemodel.on('success', function(){});
而這只是用於驗證:
if(somemodel.save()) { //action }
“同步”也是錯誤的事件(因為它也適用於銷毀)
有幫助嗎?
somemodel.save(
{}, // or null
{
success: function(){}
}
);
將允許您使用特定回調保存模型,而無需修改現有密鑰。
還有一個小提琴http://jsfiddle.net/h5ncaayu/
為避免將成功回調作為選項傳遞,您可以
使用save
返回的promise:
somemodel.save().then(...youcallback...)
或使用活動:
somemodel.on('sync', ...youcallback...); somemodel.save();
Backbone.Model有一個非常方便的方法叫做“changedAttributes”,它將返回一個可以傳遞給保存的已更改屬性的哈希值。 所以...
model.save(
model.changedAttributes(),
{
success : _.bind(function() {...},this), //_.bind() will give scope to current "this"
error : _.bind(function() {...},this);
}
);
漂亮又整潔......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.