控制器中的 Ember 火灾过滤器数据

Posted

技术标签:

【中文标题】控制器中的 Ember 火灾过滤器数据【英文标题】:Ember fire filter data in controller 【发布时间】:2017-09-17 10:20:02 【问题描述】:

我是 ember 新手,我在 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'),
);

我还可以在任务列表页面中显示此模型的所有任务。但是,我目前遇到了仅过滤归档不等于 true 的任务的问题。

在我的任务列表路线中,我有这个来完成我的任务

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

但是我需要它来过滤归档等于 false 的所有任务。我这样做我在这里或我的控制器中添加这个。

更新

我已将此添加到我的控制器中:

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

        return model.filter(function(item)
            return item.data.archive == false;
        );

    ),

这种工作,所以它显示一个过滤列表但是当我向列表中添加一个新项目时,它不会用新项目更新列表。

【问题讨论】:

【参考方案1】:

在控制器中引入计算属性,返回过滤后的taskList,

notArchivedTask: Ember.computed.filterBy('model','archive',false)

【讨论】:

我将它添加到我的控制器并更新了我的每个循环以将 notArchivedTask 合并为模型,但是,显示的视图根本没有数据 在您更新的代码中,您需要包含依赖键 model.[] 以便重新计算每个添加/删除项目。 你能在答案中证明 您可以参考this answer及其旋转链接 你是如何更新模型的?使用set 方法,才会重新计算计算属性

以上是关于控制器中的 Ember 火灾过滤器数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Ember 中的控制器操作返回一个承诺?

基于布尔值过滤模板中的 Ember.js 数据

在ember中运行时创建模型属性

Ember应用程序控制器共享数据

如何在 Ember 控制器中运行操作 afterRender

ember 数据 findRecord 返回值不是预期的记录