Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 加速慢速余烬内容过滤器_Ember.js - Fatal编程技术网

Ember.js 加速慢速余烬内容过滤器

Ember.js 加速慢速余烬内容过滤器,ember.js,Ember.js,我有以下代码来过滤我的一个控制器上的内容。模板在计算属性上循环,并显示项。然后我有一个过滤内容的文本输入。一切都很好,除了当有大量元素时,过滤变得很慢。我在别处读过一篇帖子,上面有汤姆·戴尔的回答,他试图解释这一点,但这个例子返回的是404 我下一步该怎么做才能加快速度 代码如下: 控制器: App.PlaylistIndexController = Ember.ObjectController.extend({ filterString: null, filteredSongs

我有以下代码来过滤我的一个控制器上的内容。模板在计算属性上循环,并显示项。然后我有一个过滤内容的文本输入。一切都很好,除了当有大量元素时,过滤变得很慢。我在别处读过一篇帖子,上面有汤姆·戴尔的回答,他试图解释这一点,但这个例子返回的是404

我下一步该怎么做才能加快速度

代码如下:

控制器:

App.PlaylistIndexController = Ember.ObjectController.extend({
    filterString: null,
    filteredSongs: function() {
        var filter = this.get('filterString');
        if(filter == undefined) return this.get('content.songs');
        filter = filter.toLowerCase();
        return this.get('content.songs').filter(function(item, index, enumerable){
            if(item.get('artist').toLowerCase().match(filter.toLowerCase()) || item.get('name').toLowerCase().match(filter.toLowerCase()))
                return item;
        });
    }.property('content.songs', 'filterString')
});
模板:

{{#each song in controller.filteredSongs}}
  {{song}}{{!-- some song stuff--}}
{{/each}}
过滤器输入:

{{input valueBinding='filterString' placeholder='Search for songs within playlist'}}
您可以尝试以下方法:

这样,用户可以键入文本筛选器,并且只有在用户键入更具体的条件后才会触发搜索。缺点是单字符搜索需要半秒钟的时间

您可以尝试以下方法:

这样,用户可以键入文本筛选器,并且只有在用户键入更具体的条件后才会触发搜索。缺点是单字符搜索需要半秒钟的时间

您可以尝试以下方法:

这样,用户可以键入文本筛选器,并且只有在用户键入更具体的条件后才会触发搜索。缺点是单字符搜索需要半秒钟的时间

您可以尝试以下方法:



这样,用户可以键入文本筛选器,并且只有在用户键入更具体的条件后才会触发搜索。缺点是单字符搜索需要半秒钟的时间

我是一个灰烬之家,但你能在你的房子里使用
@each
吗?类似于
“content.songs.@each.artist”,“content.songs.@each.name”
?老实说,我不知道这是否会影响性能:/我想你可以。。。但据我所知,这是一个在每次击键时重新呈现内容的问题。我是Ember noob,但你能在你的属性中使用
@each
?类似于
“content.songs.@each.artist”,“content.songs.@each.name”
?老实说,我不知道这是否会影响性能:/我想你可以。。。但据我所知,这是一个在每次击键时重新呈现内容的问题。我是Ember noob,但你能在你的属性中使用
@each
?类似于
“content.songs.@each.artist”,“content.songs.@each.name”
?老实说,我不知道这是否会影响性能:/我想你可以。。。但据我所知,这是一个在每次击键时重新呈现内容的问题。我是Ember noob,但你能在你的属性中使用
@each
?类似于
“content.songs.@each.artist”,“content.songs.@each.name”
?老实说,我不知道这是否会影响性能:/我想你可以。。。但据我所知,这是一个在每次击键时重新呈现内容的问题。我可以接受搜索结果返回的延迟,只是即使在该示例中,在键入搜索查询时也存在明显的延迟(例如,尝试键入“red1”与“red12”,然后按backspace清除查询)然后您可以使用以下方法:在DOM中绘制所有元素,并在过滤器中显示它们:我可能会在其中实现
debounce
,这样用户就不会感觉到延迟,除非他们停止键入@保鲁谢尔:你能对我的回答发表评论吗?这看起来很可靠。我将在本周末尝试实施,并让您知道它是如何工作的。我对返回搜索结果的延迟表示满意,只是在该示例中,键入搜索查询时也会出现明显的延迟(例如,尝试键入“red1”与“red12”,然后按backspace清除查询)然后您可以使用以下方法:在DOM中绘制所有元素,并在过滤器中显示它们:我可能会在其中实现
debounce
,这样用户就不会感觉到延迟,除非他们停止键入@保鲁谢尔:你能对我的回答发表评论吗?这看起来很可靠。我将在本周末尝试实施,并让您知道它是如何工作的。我对返回搜索结果的延迟表示满意,只是在该示例中,键入搜索查询时也会出现明显的延迟(例如,尝试键入“red1”与“red12”,然后按backspace清除查询)然后您可以使用以下方法:在DOM中绘制所有元素,并在过滤器中显示它们:我可能会在其中实现
debounce
,这样用户就不会感觉到延迟,除非他们停止键入@保鲁谢尔:你能对我的回答发表评论吗?这看起来很可靠。我将在本周末尝试实施,并让您知道它是如何工作的。我对返回搜索结果的延迟表示满意,只是在该示例中,键入搜索查询时也会出现明显的延迟(例如,尝试键入“red1”与“red12”,然后按backspace清除查询)然后您可以使用以下方法:在DOM中绘制所有元素,并在过滤器中显示它们:我可能会在其中实现
debounce
,这样用户就不会感觉到延迟,除非他们停止键入@保鲁谢尔:你能对我的回答发表评论吗?这看起来很可靠。我将在这个周末尝试实施,并会让您知道它是如何工作的
onInputFilterChanged: function(){
      this.set('canProceedFiltering', false);
      Ember.run.later(this, function(){
         this.set('filterString', this.get('inputFilterString'));
         this.set('canProceedFiltering', true);
      },500);
}.observes('inputFilterString')