我需要在从视图触发事件后更新模型的一个属性。我不知道哪个属性必须事先更新。如何使用主干的set方法设置变量属性?
以下是我的模型的一组示例属性:
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);
}
答案 0 :(得分:0)
我假设key
是您要在position
数组中更新的对象的整数索引?如果是这样,您需要获取位置数组,更新它然后再次设置它。试试这个:
var position = this.model.get('position');
position[key][attribute] = value;
this.model.set('position', position);
只是为了澄清,原因是因为Backbone.Model.set()只接受两种形式。要设置的属性的哈希,要么是特定属性的名称及其要设置的值。但是没有语法允许你指定一个数组的索引项,所以你必须得到整个东西,更新它然后设置它。