重新加载 ember 模型

Reload ember model

您好,我对 ember 的工作原理有点困惑,我正在创建一个应用程序,它可以列出特定用户的任务。这是我的模型:

import DS from 'ember-data';

export default DS.Model.extend({
    title: DS.attr('string'),
    location: DS.attr('string'),
    date: DS.attr('date'),
    archive: DS.attr('boolean'),
    user: DS.attr('string'),
});

那是当我将任务添加到任务列表时。然而,当我在我的任务列表中获得所有任务时,我在我的路线中使用它:

model: function () {    
        return this.store.findAll('task');   
    }

为了过滤任务的所有用户,我将其添加到我的控制器中:

filteredModel: Ember.computed('model', function(){
        let model = this.get('model');

        return model.filter(function(item){
            return item.data.user == this.get('session.user.email');
        });

    }),

一切正常。但是,当我将新任务添加到任务列表时,它不会更新我的任务列表,所以我必须重新加载我的页面。这可以在不刷新我的页面的情况下自动完成吗?

findAll 返回的数组是一个实时数组,将始终包含商店中的所有记录。但是您的 CP 有一个错误的依赖键。依赖键应该包含 .[].@each.?,否则它不会监听数组更改。因为您使用 user 属性 它应该是 model.@each.user。另外,您可能应该将当前用户添加到依赖键。

最后你的CP根本无法工作,因为filter函数中的this是filter函数的this,而不是Controller。您应该使用箭头函数或将 this 保存到变量中。

还有item.data.user好像不对,应该是item.get('user').

所以最后的CP是:

filteredModel: Ember.computed('model.@each.user', 'session.user.email', function(){
    return this.get('model')
        .filter(item => item.get('user') == this.get('session.user.email'));
}),