Ember.js。过滤的模型

时间:2017-01-31 18:32:44

标签: javascript ember.js ember-data

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

所以我的结构确实无法正常工作。

    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')
        };
    }),

我是新人,所以请宽容。

1 个答案:

答案 0 :(得分:1)

为什么需要tasks计算属性? findAll返回Promise,因此您的代码不正确。 异步计算属性有点棘手 - 请阅读this ignite article以获取更多信息。

我想说,数据提取应该发生在路由级别,所以你可以编写相应的路由js文件model钩子,

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

一样访问它