如何在Backbone模型中设置对象属性

时间:2012-03-29 23:45:13

标签: javascript backbone.js javascript-framework javascript-objects

是的,所以我有很多Backbone模型,其中一个我有一个对象,它有一组键和值,通过从字符串中找到键来修改值。

所以我开始使用基于以下原则构建的代码,我对这段代码输出为真的方式和原因非常满意:

 var boundData = {
     text: 'value' 
 }
 var key = 'text';
 return (boundData[key] === 'value');

所以要设置属性的值,我会做类似的事情:

 boundData[key] = 'new value';

然后我决定将所有现有的类翻译成Backbone模型。而我遇到的问题是,我不能再使用equals运算符更改我的属性,而是使用Backbone为模型提供的set方法。此方法将字符串作为第一个参数,此字符串标识我尝试更改的变量的键。

 this.set("boundData[" + settings.name + "]", new OpenCore.boundData(settings));

这似乎不起作用,也不是这样:

 this.set("boundData." + settings.name, new OpenCore.boundData(settings));

解决了它。在我写出问题的同时,我找到了一种方法。但我想我会留在这里以防其他人遇到同样的问题。

这是一个解决方案,虽然它可能不是最好的(如果有人可以对原始方式进行排序,我会感兴趣。),但它似乎有效。

var boundData = this.get('boundData'); //Create a reference of the object with get().
boundData[settings.name] = new OpenCore.boundData(settings); //Update this reference.
//The change will be reflected in the original instance or you can just:
this.set('boundData', boundData);

希望这可以帮助其他人!

1 个答案:

答案 0 :(得分:2)

这是一个解决方案,虽然它可能不是最好的(如果有人可以对原始方式进行排序,我会感兴趣。),但它似乎有效。

var boundData = this.get('boundData'); //Create a reference of the object with get().
boundData[settings.name] = new OpenCore.boundData(settings); //Update this reference.
//The change will be reflected in the original instance or you can just:
this.set('boundData', boundData);

希望这可以帮助其他人!