10
我有一个Backbone集合模型(以子模型作为元素) 和视图来编辑它。如何为新模型禁用Backbone.sync,并在用户点击保存按钮后重新启用同步*
我想它,最初创建模型时,为“关闭” 同步,所以后端是永远不会调用直到用户点击一个 按钮,然后我想“打开“同步,并在根模型上调用save 方法,以便将其保存到数据库。 一旦它保存了一个模型,它应该像一个正常的模型。
目标是避免保存,直到用户确定他对 满意为止。
我有一个Backbone集合模型(以子模型作为元素) 和视图来编辑它。如何为新模型禁用Backbone.sync,并在用户点击保存按钮后重新启用同步*
我想它,最初创建模型时,为“关闭” 同步,所以后端是永远不会调用直到用户点击一个 按钮,然后我想“打开“同步,并在根模型上调用save 方法,以便将其保存到数据库。 一旦它保存了一个模型,它应该像一个正常的模型。
目标是避免保存,直到用户确定他对 满意为止。
骨干最初会寻找模型的本地sync
函数,然后去Backbone.sync
。
Backbone.js Documentation:同步功能可以被全局重写为Backbone.sync,或在更细粒度的水平,通过添加同步功能到骨干集合或单个模型。
因此,你可以这样做:
var MyModel = Backbone.Model.extend({
// New instances of this model will have a 'dud' sync function
sync: function() { return false; }
});
var MyView = Backbone.View.extend({
...
events : {
'click #my-button' : 'enableSync',
'click #my-save-button' : 'saveModel'
},
enableSync: function() {
// If this view's model is still pointing to our fake sync function,
// update it so that it references Backbone.sync going forward.
if (this.model.sync !== Backbone.sync) {
this.model.sync = Backbone.sync;
}
},
saveModel: function() {
// This won't actually do anything until we click '#my-button'
this.model.save();
}
...
});
var view = new MyView({ model: new MyModel() });
这是一个非常快的回答,谢谢!很高兴知道这很简单。 –