首页 文章

在Ember 1.13中渲染控制器操作

提问于
浏览
1

首先,对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 回答

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

相关问题