去抖搜索过滤器

时间:2014-08-25 15:04:40

标签: ember.js

我试图去除我的搜索功能,但是我收到了错误消息。 我有一个余烬搜索输入,这在我的阵列控制器中:

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>

1 个答案:

答案 0 :(得分:2)

debounce应该调用函数,而不是计算属性。

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

实施例