Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 过滤模型导致空数组_Ember.js_Ember Data - Fatal编程技术网

Ember.js 过滤模型导致空数组

Ember.js 过滤模型导致空数组,ember.js,ember-data,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_s

我有以下控制器:

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


你知道为什么吗?感谢您的帮助!谢谢

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

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

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

 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
 });

这是有道理的:P谢谢你!!