如何正确过滤ArrayController

时间:2013-10-02 14:51:25

标签: ember.js

我想通过子属性过滤现有的ArrayController。怎么做?我的过滤器不起作用或为空,因为我没有看到任何项目出现(如果我没有过滤,我看到它们)。

以下是我的代码的简化版本:

模型

App.Post = DS.Model.extend({
    user: DS.belongsTo('user')
    title: DS.attr('string'),
    ...
});
App.User = DS.Model.extend({
    name: DS.attr('string'),
    status: DS.belongsTo('status'),
    ...
});
App.Status = DS.Model.extend({
    title: DS.attr('string'),
    techName: DS.attr('string')
});

控制器

App.PostsController = Ember.ArrayController.extend({
    activeUsers: function() { 
        return this.filterBy('user.status.techName', 'active'); 
    }.property('@each','@each.user','@each.user.status','@each.user.status.techName')
 });
App.ActiveUsersController = Ember.ArrayController.extend({
    needs: ['posts']
});

模板 (我的活跃用户模板)

<ul>
    {{#each controllers.posts.activeUsers}}
        <li>{{name}}</li>
    {{/each}}
</ul>

1 个答案:

答案 0 :(得分:3)

Ember.computed.filterBy将满足您的要求。

App.PostsController = Ember.ArrayController.extend({ 
    activeUsers: Ember.computed.filterBy('content','user.status.techName','active'),  
 }); 

目前尚未记录,但您可以从源代码here

中的评论中学习

示例JSBin