使用backbone的set方法更新变量属性

时间:2014-03-19 17:38:22

标签: javascript backbone.js nested-attributes backbone-model

我需要在从视图触发事件后更新模型的一个属性。我不知道哪个属性必须事先更新。如何使用主干的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);
}

1 个答案:

答案 0 :(得分:0)

我假设key是您要在position数组中更新的对象的整数索引?如果是这样,您需要获取位置数组,更新它然后再次设置它。试试这个:

var position = this.model.get('position');
position[key][attribute] = value;
this.model.set('position', position);

只是为了澄清,原因是因为Backbone.Model.set()只接受两种形式。要设置的属性的哈希,要么是特定属性的名称及其要设置的值。但是没有语法允许你指定一个数组的索引项,所以你必须得到整个东西,更新它然后设置它。