[英]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.