2017-02-21 45 views
0

,所以我有配額的模式是這樣的:如何篩選模型,得到在餘燼實時數據

export default DS.model.extend({ 
quota : DS.attr('number'), 
sellerId: DS.attr('string'), 
buyerId:DS.attr('string') }); 

和我有動態段像這樣assignQuota路線:

this.route('assignQuota', {path:'/assignQuota/:buyer_id'} 

和assignQuota .js文件:

export default Ember.Route.extend({ 
    model(params) { 
    const sellerId = this.get("session").get("uid"); 
    return this.store.query('quota',{ 
    orderBy:'buyerId', 
    equalTo: params.buyer_id 
    }).then(function(quota){ 
     return quota.filterBy('sellerId',sellerId)  
    }); 
    } 
    }); 

,在我的模板(簡化)是這樣的:

 {{#each model as |quota|}} 
      {{quota.quota}} 

      {{/each}} 

它的工作原理,但如果有人在配額模型中添加數據或刪除數據,則該列表不會在模板中自動更新。

該模板只刷新後刷新瀏覽器。有趣的是,如果我使用ember inspector來檢查數據的配額,它表明模型已經改變,如果有人改變了模型,但模板沒有反映出這些改變。

請幫助

感謝

回答

0

的原因是,該模型不遵守變化。

創建一個計算屬性並使模型的觀察者更改更改,然後使用計算值創建一個列表(您的each循環)。

quotaList: Ember.computed('model.[]', function() { 
    // Your update logic here 
    // return the new value 
}) 
+0

試過,但沒有工作 – marendra

+0

Thay it again地方@locks只是幫我解決了這個問題。 –

+1

雖然它不會更新,但'store.query'不會像@kumkanillam所提到的那樣返回一個活動數組。 – locks

2

問題在於,你怎麼做transitionToassignQuota路線,如果你是路過model的動態段,那麼它會跳過調用model鉤,它會呈現相同model數據。

+0

這是什麼即時通訊使用: this.transitionToRoute(「seller.assignQuota」,params.user_id); – marendra

+1

@ user3720044'store.query'不是實時數組,這意味着當商店發生更改時它不會自動更新。當你通過'transitionToRoute'方法進行轉換時,只需確保'model'鉤子應該被調用。如果它叫,那麼你一定會得到新的數據。 – kumkanillam

+0

'它表明模型已經改變了,如果有人改變了模型,但模板沒有反映出改變,所以它只會在你使用findAll或peekAll時自動更新模板,因爲它們都返回實時數組 – kumkanillam