我有一個打印預留列表的應用程序。有2種途徑:Ember.js - 已過濾的模型更改不會觸發已呈現模板中的更改
reservations.allReservations
reservations.newReservations
問題:
的allReservations路線工作正常。如果預訂被刪除或添加,它會自動反映在頁面上。但是,newReservations路由不會在更改時刷新 - 但是,如果我重新加載頁面,那麼更改就在那裏。
的設置:
這兩者之間的主要區別是路線模型字段。對於allReservation路線是:
App.Reservations.all();
爲newReservation路線是:
App.Reservations.all().filterProperty('isNew',true);
的應用模式和數據存儲是設置爲在Ember.js version of the TodoMVC app。
路線:
App.ReservationsNewReservationsRoute = Em.Route.extend({
model: function(){
return App.Reservation.all().filterProperty('isNew', true);
},
renderTemplate: function(){
this.render('reservationList');
},
});
控制器:
App.ReservationsNewReservationsController = Ember.ArrayController.extend({
isEmpty: function() {
return this.get('length') == 0;
}.property('@each.length', '@each.isNew'),
});
模板reservationList.hbs:
{{#if isEmpty}}
<li>
<div class="text-center" style="height: 40px; margin: auto 0;">
<label>No Reservations!</label>
</div>
</li>
{{/if}}
{{#each controller}}
... print reservations ...
{{/each}}
哦,對不起,看到all()方法,我假設您使用的是ember-data。我必須刪除我誤添加的標籤。我會盡力更新我的答案。 – 2013-04-22 21:45:28
我將它改爲:App.Reservation.all()。filter(...這次我沒有得到任何錯誤,但仍然沒有更新.. – 2013-04-22 21:46:10
是的,這很正常,因爲App.Reservation.all()。 filter()不會返回實時數組 – 2013-04-22 21:57:27