如何在emberfire中过滤模型以实时获取数据

时间:2017-02-21 23:08:13

标签: ember.js emberfire

所以我有这样的配额模型:

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

我已经为动态段分配了配置路线,如下所示:

 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检查器检查数据的配额,它表明如果有人更改模型但模板没有反映更改,模型已经更改。

请帮助

感谢

2 个答案:

答案 0 :(得分:2)

问题在于,您如何transitionToassignQuota路由,如果您将model传递给动态细分,那么它将跳过调用model挂钩它将呈现相同的model数据。

答案 1 :(得分:0)

原因是模型没有观察到变化。

创建一个计算属性并使其观察者更改模型的更改,然后使用计算值创建一个列表(您的each循环)。

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