首先,对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/,并尝试使用基于此问题的{{outlet}} Ember route not displaying template content。
如果您甚至可以推荐一篇好文章来概念性地理解Ember应用程序的流程,我将非常感激。
修改 固定错字
我修改了控制器,将输出添加为根对象的属性,但仍然没有渲染。
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);
}
}
});
答案 0 :(得分:1)
尝试将属性添加到根对象,因为它们不是动作。然后您可以在初始化时设置数据:
export default Ember.Controller.extend({
query: '',
setup: Ember.on('init', function() {
var query = this.get('query');
var searchQuestions = this.get('model').filter(function(item) {
return item.get('title').indexOf(filter) !== -1;
});
this.set('searchQuestions', searchQuestions);
})
});