我有一個訂單列表。如何使用在Ember js控制器中承諾的過濾結果
- order1
- order2
order3
每個訂單都有一些項目
- Order1
- 第11項
- item12
- Order2
- item21
- item22
- Order3
- item31
- item32
我這樣定義模型(不使用的hasMany關係):
App.Order = DS.Model.extend({ orderNote: DS.attr('string')}); App.Item = DS.Model.extend({ ItemName: DS.attr('string'), orderId: DS.attr('string')});
- Order1
目的: 當我NAV路由 「的index.html#/命令」, 我想告訴所有該訂單的物品放在一起,隨後如下
<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>
我曾試圖用一個嵌套的每一個幫手,
我使用
var currentOrderId = order.get('id');
變種RET = this.store.filter( '項目',{PID,currentOrderId},函數(項目){返回 item.get( '訂單ID')= currentOrderId})
但如何我可以用過濾後的結果(承諾)作爲中的OrderItems我temlate?
<ul>
{{#each order in orders ItemController="order"}}
<li>
{{orderNote}}
<ul>
{{#each orderItems}}
<li>item</li>
{{/each}}
</ul>
</li>
{{/each}}
</ul>
編輯
得到它的工作原理, 多虧了這則訊息(( Adding item to filtered result from ember-data ))但是,這是正確的「灰燼方式」?
<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>
這裏是itemController
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()
});
謝謝傑里米,雖然有點晚了。 – adam