3

バックボーン コレクションをフィルタリングしたい。したがって、キーアップ イベントを抑制し、ユーザーが入力を終了するか一時停止したときに発生させたいと考えています。

前のスロットル機能が起動しており、ログを取得しています(「前のスロットル」)。ただし、実際のフィルター filterByTitle は起動していません。なにか提案を?

linkApp.Views.FilteredLinks = Backbone.View.extend({

    el:'#divFilter',

    events:{
        'keyup #filterTitle': "filterByTitleThrottled"
    },

    initialize:function(){          
    },

    render:function(){
    },      

    filterByTitleThrottled:function(){
        console.log('before throttle');
        _.throttle(this.filterByTitle, 100);
    },
    filterByTitle:function(){
        console.log('actual filter by title');
    }
});
4

2 に答える 2

11

正しく動作させるには、初期化時に this.filterByTitle を _.throttle する方が良いと思います。

initialize:function(){
      this.filterByTitle = _.throttle(this.filterByTitle, 100);
},

一度スロットルすると、期待どおりの結果が得られます。

于 2013-11-10T22:12:36.050 に答える
3

-を呼び出すと_.throttle、渡された関数の新しいバージョンが作成されて返されます。そして、この後、彼女を使用できます:

filterByTitleThrottled:function(){
    console.log('before throttle');
    var trottle = _.throttle(this.filterByTitle, 100);
    trottle();
}
于 2013-11-10T21:52:51.860 に答える