0

我有以下控制器:

App.SkillsController = Ember.ArrayController.extend({
    init: function() {
        var store = this.get('store');
        var skills = store.findAll('skill');
        this.set('model',skills);
        console.log(skills);
        var tac_skills = skills.filter(function(item,index,self){
                return true;

        });
        console.log(tac_skills,'Tac Skills');
        this.set('tac_skills',tac_skills);
    }
});

技能加载正确,模型设置正确。当我遍历模型时,它们甚至会正确地输出到视图中,但由于某种原因,tac_skills 会一直以空数组的形式返回,即使每个项目都应该返回 true。我在我的应用程序的几个不同位置使用过滤器,效果很好,但在这里,由于某种原因,它不起作用。

任何想法为什么?任何帮助表示赞赏!谢谢!!

4

2 回答 2

0

在尝试迭代技能之前,您应该确保已加载技能

var tac_skills;
store.find('skill').then(function(skills) {
  tac_skills = skills.filter(....);
});
于 2013-10-18T03:38:39.820 回答
0

您可能应该使用路由/模型挂钩而不是控制器的 init 来获取模型。模型将在分配给控制器之前解析。然后你应该为你的 tac_skills 使用计算属性。

 App.SkillsRoute = Ember.Route.extend({
      model: function(){
           return this.get('store').findAll('skill');
      }
 });

 App.SkillsController = Ember.ArrayController.extend({
      tac_skills: function(){
          return this.get('model').filter(function(item,index,self){
            return true;
         });
      }.property(), // add dependencies here where relevent, for example if the
                    // filter options settings are changing and you want to recalculate
                    // tac_skills
 });
于 2013-10-18T10:16:19.273 回答