Undefined不是concat的函数

时间:2014-04-28 12:26:00

标签: javascript jquery backbone.js

我在一个带有主干和把手的页面上渲染两个模型。我正在尝试将两个模型连接在一起,但concat()函数返回error:Undefined is not a function

这是我的渲染功能:

render: function (eventName) {
     var twitter=this.collection.models[0].toJSON();
     var instagram=this.collection.models[1].toJSON();
     var conc=twitter.concat(instagram);  <--LINE ERROR      
     $(this.el).html(this.template(conc));
     return this;
},

1 个答案:

答案 0 :(得分:1)

从一些评论到原始帖子this.collection.models[0].toJSON()返回JSON的字符串表示,显然是用于传输。

为了使其达到可行状态,需要将它们转换为实际的JavaScript对象。

JSON.parse(this.collection.models[0].toJSON())

如果返回一个对象,则可以使用jQuery.extend()连接对象。

如果它返回一个数组,那么你可以使用扩展方法.concat()

如果this.collection.models[0]只是一个对象,那么对它们使用jQuery.extend(),不需要像{Elliot指出的那样.toJSON(),但是,如果它是knockoutjs之类的地方对象具有可观察的内容,toJSON可能是获取纯对象的方法。

var finalObj = {};
var twitter = this.collection.models[0];
var instagram = this.collection.models[1];
$.extend(finalObj, twitter, instagram);