我在一个带有主干和把手的页面上渲染两个模型。我正在尝试将两个模型连接在一起,但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;
},
答案 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);