我在Model
中有一些defults数据window.AppState = Backbone.Model.extend({
defaults: function() {
return {
country: false,
region: false
};
}
});
var appState = new AppState();
然后在路由器I中获取具有模型新值的数组,如下所示:
[["country", "new country value"], ["region", "new region value"]]
现在在for循环中循环更新所有收到的参数... 我这样认识到了
appState.attributes[arg] = val;
但我觉得它不清楚,因为在Backbone.js的文档中,我读到了"属性"方法,看看这个: "请使用set来更新属性,而不是直接修改它们。" 所以我的问题是:如何使用set方法更改默认值的属性?
答案 0 :(得分:9)
尝试.set()
功能......
appState.set({arg : val});
一旦使用.set()
设置参数,它将覆盖默认值。
您的示例稍作修改:
window.AppState = Backbone.Model.extend({
defaults: function() {
return {
country: false,
region: false
};
}
});
var appState = new AppState();
// when you get your array of new values you can turn it in an object
var myArray = [["country", "new country value"], ["region", "new region value"]];
var newValues = {};
for (var i = 0; i < myArray.length; ++i)
{
newValues[myArray[i][0]] = myArray[i][1];
}
// set the properties to the new values
appState.set(newValues);
// if you now return the json of the model, it has changed properties
console.log(appState.toJSON());
<强>备注强> 这个for循环在很大程度上取决于你的数组的结构,我写它的方式将适用于你在你的例子中给出的数组,如果有任何改变你将需要更改for循环的工作
备注2 如果您经常使用此技术,则可以始终使用辅助方法提取该功能。