使用Backbone.js我知道强烈建议使用set方法设置模型的属性,而不是直接修改属性内部哈希.
但是,除了不自动触发"更改"事件之外,还有哪些其他缺点或"副作用"直接修改内部哈希?
我面临的问题是,虽然set方法采用对象文字,但我需要使用在运行时确定的变量来指定左侧.谢谢.
myModel.set({
myProperty : myValue; //myProperty is a variable, so this is invalid syntax
})
//vs
myModel.attributes[myProperty] = myValue; //myProperty is a variable that can be evaluated
Run Code Online (Sandbox Code Playgroud)
Bri*_*sio 15
好吧,如果你看一下带注释的源代码,你会发现它set做了很多.
如果您使用为您执行此操作的函数扩展Backbone.Model,该怎么办?
Backbone.Model.prototype.setByName = function(key, value, options) {
var setter = {};
setter[key] = value;
this.set(setter, options);
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以直接在模型上执行您想要的操作:
var model = new Backbone.Model();
model.setByName(myProperty, "bar");
Run Code Online (Sandbox Code Playgroud)
这对我来说是一个更好的解决方案.
编辑
正如@ earl3s指出的那样,在最近的Backbone版本中不再需要这样做了.今天,你可以打电话model.set(myProperty, "bar"),它可以做你想要的.
| 归档时间: |
|
| 查看次数: |
7660 次 |
| 最近记录: |