我有一个用户模型(Backbone.js),我想更新其设置属性,然后将其保存到服务器。设置是 JSON 格式,我设置它的方式是设置是字符串版本,settingsJSON 是对象版本。我将函数绑定到每个函数的更改事件,以便当一个函数更改时,它会更新另一个函数。
我遇到的问题是 save 方法在更改的处理程序完成运行之前运行。有什么办法可以确保该模型的所有事件处理程序都是完整的或类似的东西?
我怎么称呼它:
currentUser.get('settingsJSON').apps = appsEnabled;
currentUser.save();
我的事件处理程序:
Initialize: function() {
var that = this;
this.on("change:settingsJSON", function(model){
model.set({settings: JSON.stringify(model.get('settingsJSON'))});
});
this.on("change:settings", function(model){
model.set({settingsJSON: JSON.parse(model.get('settings'))});
});
}
@fencliff:
当我运行它并正常工作时,更改事件正在触发,我让它将新的设置字符串打印到控制台。
你确定它们是同步调用的吗?我添加console.log('changed')
到末尾并在每次控制台读取时直接.on(change)
放置:console.log('saved')
currentUser.save()
saved
changed
现在我已经完成了,以便在保存之前直接将 JSON 字符串保存到设置中,并且效果很好。