嵌套数组进入骨干模型

时间:2016-07-30 21:10:37

标签: javascript arrays backbone.js

我有以下骨干模型:

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));

有人能帮帮我吗?

1 个答案:

答案 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()方法获取不是输入的元素的值。