Ember.js。过滤模型

Ember.js. Filtered model

我有一个带有任务的模型,我想按状态过滤数据并在不同的列表中显示结果。

所以我的构造无法按我想要的方式工作。

    tasks: Ember.computed(function(){
        var modelTasks = this.get('store').findAll('task');

        return {
            todo: modelTasks.filterBy('status', 'todo'),
            inProgress: modelTasks.filterBy('status', 'inprogress'),
            done: modelTasks.filterBy('status', 'done')
        };
    }),

我是新人,请多多包涵

为什么需要 tasks 计算 属性?。 findAll returns 保证你的代码不正确。 异步计算属性有点棘手 - 阅读 this ignite article 了解更多信息。

我会说,数据获取应该发生在路由级别,所以相应的路由js文件model hook你可以写,

export default Ember.Route.extend({
    model() {
        return this.get('store').findAll('task').then((result) => {
            return {
                todo: result.filterBy('status', 'todo'),
                inProgress: result.filterBy('status', 'inprogress'),
                done: result.filterBy('status', 'done')
            };
        });
    }
});

对应的hbs文件里面,可以像model.todo

一样访问