过滤模型导致空数组

时间:2013-10-17 22:18:01

标签: ember.js ember-data

我有以下控制器:

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。我在我的应用程序中的几个不同位置使用过滤器,它工作得很好,但在这里,由于某种原因,它不起作用。

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

2 个答案:

答案 0 :(得分:0)

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

var tac_skills;
store.find('skill').then(function(skills) {
  tac_skills = skills.filter(....);
});

答案 1 :(得分: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
 });