jos*_*hls 14 javascript backbone.js
给出以下代码段:
var m = new Backbone.Model({
name: 'joshua'
});
m.set('name', 'something else');
Run Code Online (Sandbox Code Playgroud)
如果我现在打电话m.hasChanged()或m.hasChanged('name')我得到false.为什么?我的理解是这两者都应该回归true.
m.changedAttributes() 也返回false.
这是一个小提琴,说明我正在做什么,并期待:http://jsfiddle.net/9cvVv/88/
编辑: 似乎除非你传递{ silent: true; }给set()方法然后它将change在模型上触发事件清除changedAttributes(),等等.基本上这些属性仅跟踪自上次change触发事件以来的更改.
我在文档中读到了它,但起初并没有真正理解它.
这对我来说似乎没什么用.我将不胜感激任何解释为什么它的工作方式和实现我想要的结果的最佳方式.(绕过{silent: true; }并放弃使用该change事件似乎是浪费.)
jos*_*hls 15
除非您传递{ silent: true; }给该set()方法,否则它将change在您的模型上触发事件以清除changedAttributes()等等.实际上,这些属性仅跟踪自上次change触发事件以来的更改.
所以答案是改为:
m.set('name', 'something else', {silent: true})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6634 次 |
| 最近记录: |