Dav*_*vid 5 backbone.js backbone-events
我有一个模型,在初始化函数中我有以下代码:
this.listenTo(this, 'change:re change:read', this.patch);
Run Code Online (Sandbox Code Playgroud)
该补丁的功能如下:
patch: function(object) {
this.save(object.changed, { patch: true });
},
Run Code Online (Sandbox Code Playgroud)
在我的应用程序的其他地方,我可能会运行:
model.set({ re: 1 });
Run Code Online (Sandbox Code Playgroud)
要么:
model.set({ read: new Date() });
Run Code Online (Sandbox Code Playgroud)
这两个都很完美,但是当我打电话时:
model.set({ re: 1, read: new Date() });
Run Code Online (Sandbox Code Playgroud)
该补丁函数被调用两次,并有两个往返到服务器.如果可能的话,我想保持这一次往返.
任何人都可以帮助这个吗?
非常感谢
大卫
您的patch方法将为'change:re'事件调用一次,并再次为'change:read'事件调用.Backbone不知道你的意思是"告诉我是否至少有一个re或read更改",它只是知道你想要被告知是否有re变化并告知是否有read变化.
您可以'change'使用changed哈希监听事件并自行进行过滤:
变
model.changed该更改的属性是一个包含自上次已更改的所有属性的内部散集.
像这样的东西:
this.listenTo(this, 'change', this.patch);
Run Code Online (Sandbox Code Playgroud)
然后:
patch: function() {
if('re' in this.changed || 'read' in this.changed)
this.save(this.changed, { patch: true });
}
Run Code Online (Sandbox Code Playgroud)
演示:https://jsfiddle.net/ambiguous/ja20z021/