Javascript 如何在Backbone.js中使用set方法更改默认模型属性
我在模型中有一些结果数据Javascript 如何在Backbone.js中使用set方法更改默认模型属性,javascript,backbone.js,Javascript,Backbone.js,我在模型中有一些结果数据 window.AppState = Backbone.Model.extend({ defaults: function() { return { country: false, region: false }; } }); var appState = new AppState(); 然后在路由器中,我得到一个数组,该数组具有如下模型的新值: [["country", "new country value"], [
window.AppState = Backbone.Model.extend({
defaults: function() {
return {
country: false,
region: false
};
}
});
var appState = new AppState();
然后在路由器中,我得到一个数组,该数组具有如下模型的新值:
[["country", "new country value"], ["region", "new region value"]]
现在在一个for循环中,我更新所有接收到的参数。。。
我是这样认识的
appState.attributes[arg] = val;
但我认为这并不清楚,因为在Backbone.js的文档中,我读到了“attribute”方法,并看到了以下内容:
“请使用set更新属性,而不是直接修改属性。”
所以我的问题是:如何使用set方法更改默认值的属性?试试.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());
window.AppState=Backbone.Model.extend({
默认值:函数(){
返回{
国家:错,
地区:假
};
}
});
var appState=新的appState();
//当您获得新值数组时,可以将其转换为对象
var myArray=[“国家”、“新国家/地区值”]、[“地区”、“新地区值”];
var newValues={};
对于(变量i=0;i
备注
这个for循环在很大程度上取决于数组的结构,我编写它的方式将适用于您在示例中给出的数组,如果有任何更改,您将需要更改for循环的工作方式
备注2
如果您更经常地使用这种技术,您总是可以在助手方法中提取该功能。是的,这是逻辑,但我的问题是,如何在循环中生成:我的意思是,如果我有带键的字符串和带值的字符串,我如何使用.set()生成它?例如,此代码不起作用:var key='country',value='some value';set({key,value});我用您需要插入的内容更改了我的答案。实际上,它们被设置为一个对象,您不需要循环和设置,但是您确实需要一个循环来创建对象:s
var attrs={};属性[键]=值;模型集(attrs)代码>是的,这是真的=)非常感谢你,桑德和马克斯。这就是我的意思,现在它工作得很好。