在Ember控制器中过滤和重新排列模型/内容

时间:2013-12-06 20:21:48

标签: json ember.js ember-model

假设我有一个JSON数据数组,例如:

[ {"name":"parijat","age":28},
  {"name":"paul","age":28},
  {"name":"steven","age"27},
...
] 

这是我模型的一部分,这个模型设置如下:

App.UserRoute = Ember.Route.extend({     模型:函数(){         返回App.User.FIXTURES; //定义如上    } });

我想从这个JSON数组中获取独特的年龄并将它们显示在我的模板中,所以我参考了计算属性文章并阅读了一些关于如何枚举Ember Enumerables的内容,最终得到了这个:

    App.UserController = Ember.ArrayController.extend({
         ages:function(){
              var data = this.get('content'); 
              var ages = data.filter(function(item){
                       return item.age;
             });

        }.property('content');
});

现在上面的控制器代码不正确,但问题是如果我在里面添加一个console.log语句,它甚至不会进入data.filter()方法。 IMO,它通常应该是控制台日志记录,因为存在App.Users.FIXTURE。我尝试使用不起作用的属性('content。@ each')。也没有将 this.get('content')更改为 this.get('content。@ each') this.get('content。@ each ')。toArray() {spat a error}。

不确定在这里做什么或者我完全错过了什么。

1 个答案:

答案 0 :(得分:0)

过滤器用于减少项目数量,而不是用于映射。

您可以使用data.mapBy('age')来获取您的年龄数组:

ages:function(){
  return this.get('content').mapBy('age');
}.property('content.@each')

或在你的把手功能中你可以使用每个助手:

{{#each item in controller}}
  {{item.age}}
{{/each}}