我们需要能够处理骨干之前和之后保存事件。保存事件之前和之后的骨干js
基本上,当我们有一个保存的负载发生,我们想显示一个“保存...”的消息。不知道Backbine如何处理批次保存,但如果有一个队列我们希望能够在处理批处理之前显示,然后在处理完成后移除。
Backbone中是否有这样的东西?
我们需要能够处理骨干之前和之后保存事件。保存事件之前和之后的骨干js
基本上,当我们有一个保存的负载发生,我们想显示一个“保存...”的消息。不知道Backbine如何处理批次保存,但如果有一个队列我们希望能够在处理批处理之前显示,然后在处理完成后移除。
Backbone中是否有这样的东西?
在您拨打保存之前,只需显示您的信息。所以有以前的情况。
至于后面你可以传递成功函数。 save方法需要2个可选参数。唯一的警告是,第一个总是必须是属性。
yourModel.save({
attr1: attr1,
attr2: attr2
},
{
success: function(model, response)
{
//do whatever
}
});
如何覆盖Backbone.Model.save
?快速执行:
Backbone.Model._amountOfModelsSaving = 0;
Backbone.Model._save = Backbone.Model.save;
Backbone.Model.save = function() {
if (Backbone.Model._amountOfModelsSaving === 0) {
// Show the message
}
Backbone.Model._amountOfModelsSaving++;
var request = Backbone.Model._save.apply(this, arguments);
request.always(function() {
Backbone.Model._amountOfModelsSaving--;
if (Backbone.Model._amountOfModelsSaving === 0) {
// Hide the message
}
});
return request;
}
这很麻烦,因为我们必须在我们称之为保存的任何地方执行此操作。另外 - 这对集合没有好处:( – iwayneo
)你可以在mixin中抽象出这个行为(一个包含函数的散列对象),并将它包含在视图中 – dira
是的,我从来没有说过我认为它很漂亮。一个简单的方法就是使用模型现有的属性,不幸的是,如果不先传入某个属性参数,就无法传递成功函数来保存。 – mccow002