我的灯具数据包含多个数组。此多个数组cart_items
中包含一些产品数据。
我正在尝试计算购物车数据中可用产品的总数(基于cart_items
项的长度),但我无法计算cart_items
中没有任何商品。
在路由器中,我选择了应用程序夹具作为当前路径的模型,如下所示:
Astcart.IndexRoute = Ember.Route.extend({
model: function() {
return Astcart.Application.find();
}
});
计算属性代码:
Astcart.IndexController = Ember.ArrayController.extend({
tot_cart_prd: function() {
return this.get("model.cart_items").get('length');
}.property("@each.isLoaded")
});
我的夹具数据是:
Astcart.Application.adapter = Ember.FixtureAdapter.create();
Astcart.Application.FIXTURES = [
{
"logo_url": "img/logo.jpg",
"logged_in": {
"logged": true,
"username": "sachin",
"account_id": "4214"
},
"category_list": [
{
"id": "1",
"name": "Mobiles & Accessories"
},
{
"id": "2",
"name": "Computers & Software"
},
{
"id": "3",
"name": "Fashion"
},
{
"id": "4",
"name": "Electronics"
},
{
"id": "5",
"name": "Watches & Jewelry"
},
{
"id": "6",
"name": "Health & Beauty"
},
{
"id": "7",
"name": "Games"
},
{
"id": "8",
"name": "Books & Entertainment"
},
{
"id": "9",
"name": "Gaming"
},
{
"id": "10",
"name": "Shoes & Bags"
}
],
"cart_items": [
{
"id": "1",
"name": "Samsung Galaxy Tab 2",
"qty": "1",
"price": "1245.12",
"subtotal": "7842.23"
},
{
"id": "2",
"name": "Samsung Galaxy Tab 2",
"qty": "1",
"price": "1245.12",
"subtotal": "7842.23"
},
{
"id": "3",
"name": "Samsung Galaxy Tab 2",
"qty": "1",
"price": "1245.12",
"subtotal": "7842.23"
}
]
}
];
我已发布了我的代码here(JSFiddle)。
任何人都可以告诉我为什么this.get("model.cart_items")
返回null?
答案 0 :(得分:2)
因为您的IndexController
从路线收到Astcart.Application
数组。您需要迭代每个应用程序并获取每个类别列表的长度。
您的计算属性需要如下:
Astcart.IndexController = Ember.ArrayController.extend({
tot_cart_prd: function() {
var result = this.get('model').map(function(application) {
return application.get('category_list.length');
});
return result;
}.property('model.@each.category_list.length')
});
这是一个更新的小提琴http://jsfiddle.net/marciojunior/PZZym/
答案 1 :(得分:0)
我刚看过这个,你的核心问题与Application
和Cart_items
之间的关系设置有关。 this.get("model.cart_items").get('length')
失败的原因是this.get("model.cart_items")
返回null
。如果你能让你的关系发挥作用,你应该走在正确的轨道上。我对EmberModel一无所知,所以我在那里得不到多少帮助。