2016-07-30 103 views
0

我有以下的骨干机型:嵌套数组骨干模式

var Info = Backbone.Model.extend({ 
    urlRoot: 'http://localhost:8080/info', 
    defaults : { 
     nombre: '', 
     tipo : '', 
     telf : 0, 
     icono : '', 
     direccion:[{ 
      direccion:'', 
      latitud:'', 
      longitud:'' 
     }] 
    }, 
    idAttribute:"_id" 
}); 

我想改变内部“direccion”数组的“direccion”属性附加伤害值。

我用下面的代码,但不工作:

//clone the array 
var direccionArray = _.clone(this.collection.get(idInfo).get('direccion')); 
direccionArray.direccion = this.$('#dir-info-edit').val(); 

在这里我获得与修改的数值数组和正常工作:

console.log(direccionArray); 

现在我设定的阵列到我的骨干模型如下,并没有工作(模型不改变),我得到相同的模型(改变其他属性,如“nombre”或“tipo”工作正常,但不与阵列):

this.collection.get(idInfo).set('direccion',direccionArray); 
console.log(this.collection.get(idInfo)); 

有人可以帮我吗?

回答

0

如前所述direccion模型的属性是包含对象的索引0

数组当你试图做:

//clone the array 
var direccionArray = _.clone(this.collection.get(idInfo).get('direccion')); 
direccionArray.direccion = this.$('#dir-info-edit').val(); 

这将不会更新direccionArray[0],要更新,只是将新的属性添加到您的数组对象。

你想要做的是:

direccionArray[0].direccion = this.$('#dir-info-edit').val(); 

尝试console.dir(direccionArray)旧数组,你会看到其中的差别。

更新:

请参阅this的jsfiddle这个问题的解释。你的情况的主要原因可能是你正在尝试通过jQuery的val()方法获取非输入元素的值。

+0

我改变了,但我的模型仍然没有改变。问题出现在这里this.collection.get(idInfo).set('direccion',direccionArray); – Bruno

+0

@bruno你可以在答案中创建一个小提琴或添加脚本,它应该工作吗? –

+0

对不起,我不明白你的意思:( – Bruno