首先,对Ember来说非常新,特别是对控制器角色的改变 .
在我的ember-cli 1.13.8应用程序中,我有一个控制器操作,可以找到通过用户搜索过滤的项目 . 问题是此搜索的结果永远不会在模板上呈现 .
控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
query: '',
searchQuestions: function() {
var query = this.get('query');
return this.get('model').filter(function(item) {
return item.get('title').indexOf(query) !== -1;
});
}
}
});
模板:
{{#each searchQuestions as |item|}}
<p>{{item}}</p>
{{/each}}
我的理解是searchQuestions应该可用于模板 . 该操作被正确调用,并将运行从路由返回的模型 . 我已经登录了该方法,它将间歇性地打印出-1或0,以便找到匹配项 . 它只是不会在模板中更新 .
我已经查阅了这些指南:http://guides.emberjs.com/v2.0.0/controllers/以及尝试使用{}基于此问题:Ember route not displaying template content .
如果您甚至可以推荐一篇好文章来概念性地理解Ember应用程序的流程,我将非常感激 .
Edit 修正了拼写错误
我修改了控制器,将输出添加为根对象的属性,但仍然没有渲染 .
import Ember from 'ember';
export default Ember.Controller.extend({
searchQuestions: "",
actions: {
query: '',
searchQuestions: function() {
var query = this.get('query');
return this.get('model').filter(function(item) {
console.log(item.get('title').indexOf(query) !== -1)
return item.get('title').indexOf(query) !== -1;
});
this.set('searchQuestions', searchQuestions);
}
}
});
1 回答
尝试将属性添加到根对象,因为它们不是操作 . 然后你可以在初始化时设置数据: