0

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

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

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

App.UserRoute = Ember.Route.extend({ model:function(){ return 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 的次数一样多。我尝试使用也不起作用的 property('content.@each') 。也没有将this.get('content')更改为this.get('content.@each')this.get('content.@each').toArray() {spat an error}。

不知道在这里做什么或我完全错过了什么。

4

1 回答 1

0

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

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

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

或者在您的车把功能中,您可以只使用 each 助手:

{{#each item in controller}}
  {{item.age}}
{{/each}}
于 2013-12-06T20:53:56.103 回答