我有以下控制器:
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。我在我的应用程序中的几个不同位置使用过滤器,它工作得很好,但在这里,由于某种原因,它不起作用。
任何想法为什么?任何帮助表示赞赏!谢谢!
答案 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
});