我有以下骨干模型:
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"或&# 34; tipo"工作正常,但没有数组):
this.collection.get(idInfo).set('direccion',direccionArray);
console.log(this.collection.get(idInfo));
有人能帮帮我吗?
答案 0 :(得分: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()
方法获取不是输入的元素的值。