我需要获取旋转木马的firstObject并将其设置为活动状态 这就是我设置轮播属性的方式
JSBIN代码
App.ApplicationController = Ember.ArrayController.extend({
content: [],
carouselData: function () {
var categories = this.get('content');
var products = Em.A([]);
categories.forEach(function (category) {
category.get('items').then(function (data) {
data.forEach(function (product) {
products.addObject(product);
});
});
});
console.log(products);
console.log(products.get('firstObject'));
return products;
}.property('content')
});
更新
@ppcano感谢您的解释:)。我得到了你要我做的事。仅在hasMany已满足时返回模型。然后使用computed属性将它们保存在carouselData属性中。但可能是我在实现中遗漏了一些内容cdata.get('firstObject')
在App.Caroure中返回了更新jsbin UPDATED JSBIN的承诺
更新2 已解决enter link description here
答案 0 :(得分:3)
您的问题是计算属性在异步执行中不起作用。
category.get('items').then(function (data)
在将任何数据推送到产品之前,会返回products变量,因为必须请求这些项目。
当您确保在计算属性时加载项目时,可以解决此问题。您可以在路线模型中执行以下操作:
model: function(){
return this.store.find('facture').then(function(factures){
var productPromises = factures.getEach('items');
return Ember.RSVP.all(productPromises).then(function(products) {
return factures;
});
});
}
然后,您可以将CP定义为:
carouselData: function(){
var result = Em.A([]);
this.get('content').getEach('items').forEach(function(items){
result.pushObjects(items.toArray());
});
return result;
}.property('content.@each.items.@each')