Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用主干更新变量属性';s集方法_Javascript_Backbone.js_Nested Attributes_Backbone Model - Fatal编程技术网

Javascript 使用主干更新变量属性';s集方法

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},

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

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

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

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

您已经在视图中定义了对模型的引用了吗?最好是在实例化视图时?是的,除了
this.model.set(['position'][key][attribute],value)之外,其他一切都能正常工作