Javascript 将多个模型分组以在Ember CLI中迭代

Javascript 将多个模型分组以在Ember CLI中迭代,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,我试图遵循Ember 2.3中的语法,但语法已被弃用。在Ember 2.0+的一个模板中,我是否可以将几种类型的模型分组到一个对象中进行迭代(如tumblr样式的仪表板) 原始问题: stream: function() { var post = this.get('post'), bookmark = this.get('bookmark'), photo = this.get('photo'); var stream = []; stream.pushObjects(po

我试图遵循Ember 2.3中的语法,但语法已被弃用。在Ember 2.0+的一个模板中,我是否可以将几种类型的模型分组到一个对象中进行迭代(如tumblr样式的仪表板)

原始问题:

stream: function() {
var post = this.get('post'),
    bookmark = this.get('bookmark'),
    photo = this.get('photo');

var stream = [];

stream.pushObjects(post);
stream.pushObjects(bookmark);
stream.pushObjects(photo);
return stream;

}.property('post.@each', 'bookmark.@each', 'photo.@each'),
我的尝试:

stream: Ember.computed('post.[]', 'bookmark.[]', 'photo.[]', function() {
var post = this.get('post');
var bookmark = this.get('bookmark');
var photo = this.get('photo');

var stream = [];

stream.pushObjects(post);
stream.pushObjects(book);
stream.pushObjects(photo);    
return stream;
}),

对你有用吗?如果没有,我的第一个猜测是你的变量(post、bookmark和photo)是余烬对象,是真实模型的包装。在模板中迭代此包装将不起作用。在这种情况下,您需要做的是检索它们的内容,即它们包装的真实数组数据
var post=this.get('post.content');var bookmark=this.get('bookmark.content');var photo=this.get('photo.content')现在,post、bookmark和photo是可以合并到调用stream的单个数组中的数组。不幸的是,我的代码和为包含您的建议而编辑的代码都给了我以下错误:流类型的Object Inspector错误错误:必须传递Ember.Enumerable到Ember.MutableArray#pushObjects.Ok,告诉我们什么是
post
属性?我猜这是一个记录数组,您在与控制器关联的路由中加载了
this.store.query()
this.store.findAll()
,不是吗?如果是,它应该返回一个InternalModels数组。我假设它是一个数组,因为您正在使用
post.[]
post.@each
。顺便说一句,如果使用
stream.pushObject()
而不是
stream.pushObjects()
,会发生什么?我不认为它是一个数组(请原谅我的无知),它是通过这个.store.findAll()调用的,而且它似乎是一个类?这里有一个“_content”属性,上面有一个“content”属性,其中的posts作为路由中的数组,如您所说。是的,这样应该可以工作:
var arrayOfPosts=this.get('post').get('content');//返回[InternalModels*]/。。。对书签和照片执行相同的操作var stream=[];stream.pushObjects(arrayOfPosts)
this.get('post')
返回一个类,我将该类描述为
findAll()
检索的所有数据的包装器。此类的属性内容包括以数组形式加载的所有数据。InternalModels数组。由于
pushObjects()
需要一个数组作为参数,因此它应该可以工作。;-)