Javascript 使用主干更新变量属性';s集方法
我需要在从视图触发事件后更新模型的一个属性。我不知道哪些属性必须事先更新。如何使用主干的set方法设置变量属性 以下是我的模型的一组属性示例:Javascript 使用主干更新变量属性';s集方法,javascript,backbone.js,nested-attributes,backbone-model,Javascript,Backbone.js,Nested Attributes,Backbone Model,我需要在从视图触发事件后更新模型的一个属性。我不知道哪些属性必须事先更新。如何使用主干的set方法设置变量属性 以下是我的模型的一组属性示例: defaults: { content: 'Stupid filthy Hobbit', date: '03-19-14', position: [ {top: 134, left: 22},
defaults: {
content: 'Stupid filthy Hobbit',
date: '03-19-14',
position: [
{top: 134, left: 22},
{top: 78, left: 24},
{top: 91, left: 18}
]
}
以下是我在视图中使用的方法:
events: {
'change input': 'onChangePosition'
},
onChangePosition: function(e){
var key = $(e.currentTarget).data('key');
var attribute = $(e.currentTarget).data('attribute');
var value = $(e.currentTarget).val();
this.model.set(['position'][key][attribute], value);
}
我假设
键
是要在位置
数组中更新的对象的整数索引?如果是这样,您需要获取位置数组,更新它,然后再次设置它。试试这个:
var position = this.model.get('position');
position[key][attribute] = value;
this.model.set('position', position);
只是想澄清一下,原因是因为只接受两种形式。要设置的属性的散列,或要设置的特定属性的名称及其值。但是没有语法允许您指定数组的索引项,因此您必须获取整个内容,更新它,然后设置它。您已经在视图中定义了对模型的引用了吗?最好是在实例化视图时?是的,除了
this.model.set(['position'][key][attribute],value)之外,其他一切都能正常工作代码>