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

Updating a variable attribute with backbone's set method

本文关键字:方法 更新 变量 属性 set backbone 使用      更新时间:2023-09-26

我需要在从视图触发事件后更新模型的一个属性。我不知道哪个属性需要事先更新。我怎么能设置一个变量属性与骨干的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);
}

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

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

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