是的,所以我有很多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);
希望这可以帮助其他人!
答案 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);
希望这可以帮助其他人!