Ember.js 去盎司搜索滤波器

Ember.js 去盎司搜索滤波器,ember.js,Ember.js,我试图取消我的搜索函数,但我得到一个错误。 我在阵列控制器中有一个余烬搜索输入: App.PostsController = Ember.ArrayController.extend({ watchSearch: function() { Em.run.debounce(this, this.itemsa, 400); }.observes("search"), itemsa: function() { var searched = this.g

我试图取消我的搜索函数,但我得到一个错误。 我在阵列控制器中有一个余烬搜索输入:

App.PostsController = Ember.ArrayController.extend({
    watchSearch: function() {
      Em.run.debounce(this, this.itemsa, 400);
    }.observes("search"),

    itemsa: function() {
      var searched = this.get("search") ? this.get("searchedItems") : this;
      return searched;    
    }.property("searchedItems"),

  searchedItems: function() {
    var search = this.get('search').toLowerCase();
    return this.filter(function(item) {
      return item.get('title').toLowerCase().indexOf(search) != -1;
    })
  }.property('search', 'title')
});
在我的模板中,我有:

<script type="text/x-handlebars" id="posts">
  {{#each itemsa}}
    {{title}}
  {{/each}}
</script>

{{{#每个项目a}}
{{title}}
{{/每个}}

反Bounce应该调用函数,而不是计算属性

App.PostsController = Ember.ArrayController.extend({
    watchSearch: function() {
      Em.run.debounce(this, this.runSearch, 400);
    }.observes("search"),

    runSearch: function(){
      this.set('nextSearch', this.get('search'));
    },

    itemsa: function() {
      var searched = this.get("search") ? this.get("searchedItems") : this;
      return searched;    
    }.property("searchedItems"),

  searchedItems: function() {
    var search = this.get('search').toLowerCase();
    return this.filter(function(item) {
      return item.get('title').toLowerCase().indexOf(search) != -1;
    })
  }.property('nextSearch', 'title')
});
例子
  • 无去盎司:
  • 带去盎司:

对。我觉得它应该能够调用计算属性。多走一步似乎很奇怪。谢谢你真快@Kingpin2k!是的,计算属性给人一种错误的感觉,认为它们仍然是可以调用的函数,但实际上它们是一种不同的范式,在这一点上,它们只能得到
this.get('itemsa')
,可以缓存和观察,等等,但仅仅调用它在现实世界中没有实际意义。老实说,我们很幸运,我上个月在一次余烬聚会上写了这两个例子