Ember.js 如何在Ember js控制器中使用承诺的筛选结果
我有一份订单单Ember.js 如何在Ember js控制器中使用承诺的筛选结果,ember.js,Ember.js,我有一份订单单 订单1 订单2 订单3 每个订单都有一些项目 订单1 项目11 项目12 订单2 项目21 项目22 订单3 项目31 项目32 我这样定义模型(没有使用很多关系): 目的: 当我导航到路由“index.html#/orders”时, 我想显示所有订单及其项目,如下所示 <ul> <li> <p>order1_note</p> <ul> <li>Item1
- 订单1
- 订单2
- 订单3
每个订单都有一些项目
- 订单1
- 项目11
- 项目12
- 订单2
- 项目21
- 项目22
- 订单3
- 项目31
- 项目32
- 订单1
<ul>
<li>
<p>order1_note</p>
<ul>
<li>Item11</li>
<li>Item12</li>
</ul>
</li>
<li>
<p>order2_note</p>
<ul>
<li>Item21</li>
<li>Item22</li>
</ul>
</li>
<li>
<p>order3_note</p>
<ul>
<li>Item31</li>
<li>Item32</li>
</ul>
</li>
</ul>
不,这不是真正的余烬方式。相反,您应该使用
belongsTo
和hasMany
直接在模型之间建立关系
App.Order = DS.Model.extend({
orderNote: DS.attr('string'),
items: DS.attr('hasMany')
});
App.Item = DS.Model.extend({
ItemName: DS.attr('string'),
order: DS.attr('belongsTo')
});
然后,模板只使用项
集合
<script type="text/x-handlebars" data-template-name="orders">
<ul>
{{#each order in orders ItemController="order"}}
<li>
{{orderNote}}
<ul>
{{#each items}}
<li>{{ItemName}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</script>
{{{#订单中的每个订单ItemController=“order”}
-
{{orderNote}}
{{{#每项}
- {{ItemName}}
{{/每个}}
{{/每个}}
有关更多信息,请参阅“查找模型”指南的“定义关系”部分
<script type="text/x-handlebars" data-template-name="orders">
<ul>
{{#each order in controller itemController= 'order'}}
<li>{{name}}</li>
<hr />
<ul>
{{#each item in items.content}}
<li>
{{item.name}}
</li>
{{/each}}
</ul>
{{/each}}
</ul>
</script>
App.ProjectController =Ember.ObjectController.extend({
oid:function(){
return this.get('content').get('id');
}.property(),
items: function(){
var self = this;
var oid = self.get('id');
var itemPromise= self.store.filter('item', {orderId: oid},function (item) {
return item.get('orderId')==oid;
});
//itemPromise is a promise.
// cached in the callback as value?
itemPromise.then(function(value){
self.set('items',value);
});
}.property()
});
App.Order = DS.Model.extend({
orderNote: DS.attr('string'),
items: DS.attr('hasMany')
});
App.Item = DS.Model.extend({
ItemName: DS.attr('string'),
order: DS.attr('belongsTo')
});
<script type="text/x-handlebars" data-template-name="orders">
<ul>
{{#each order in orders ItemController="order"}}
<li>
{{orderNote}}
<ul>
{{#each items}}
<li>{{ItemName}}</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
</script>