我的模型中有一个数组:
accountRuleMessages: Array[1]
0: Object
ruleKey: "abc"
ruleMessage: "error"
我想根据条件在我的应用程序中更新此数组,例如:
this.model.set('accountRuleMessages', { "ruleKey": "123","ruleMessage": "new message" });
但现在这样设置数组:
accountRuleMessages: Object
ruleKey: "123"
ruleMessage: "aa"
这是正确的方法吗?请确认!
答案 0 :(得分:0)
最好在模型中使用嵌套集合而不是普通数组。
如果accountRuleMessages
作为数组来自服务器,则在模型的parse
方法中,您可以将其转换为Backbone.Collection
。
然后使用收集方法更新它很容易:
var firstMessage = this.model.get('accountRuleMessages').at(0);
firstMessage.set({
ruleKey: "123",
ruleMessage: "new message"
});
如果你想使用香草阵列:
var accountRuleMessages = this.model.get('accountRuleMessages');
accountRuleMessages[0] = {
ruleKey: "123",
ruleMessage: "new message"
}
应该可以工作,因为Array是通过引用传递的,所以你可以直接修改它。但是,您将无法执行有用的操作,例如“当消息更改时,重新呈现此消息列表”,就像您使用集合一样。
专业提示:如果您确实将其设为集合,那么最好使用将idAttribute设置为ruleKey
的模型,以便您可以使用collection.get
和其他好东西