我正在向流星应用添加搜索功能,并希望在键盘事件后触发搜索,再加上500ms左右。我不希望在每个单独的密钥后在服务器上调用我的meteor方法,因为如果有人输入的话会是......很多电话。
如何在500ms的keyup事件中添加延迟,但如果检测到另一个keyup事件,则触发事件已取消?
答案 0 :(得分:3)
使用underscore
软件包的debounce
功能。您可能需要通过underscore
将meteor add underscore
添加到项目中。但我认为它已被默认包含在内。
var doSearch = _.debounce(function() {
// do your search
}, 500);
答案 1 :(得分:0)
3年后回答
接受的答案令问题混淆,问题是" 在Meteor中添加延迟事件的最佳方式?"。
目前流星1.5.2是最新的,以下是该问题的确切预期功能。
编写事件监听器活动的默认方式
Template.YourTemplateName.events({
// inputs with either id/class as "search"
'input #search, input .search': function(event, template){
console.log('Searching.');
}
});
添加具有预期延迟的事件
Template.YourTemplateName.events({
// inputs with either id/class as "search"
'input #search, input .search': _.debounce(function(event, template){
console.log('Searching.');
}, 1000)
});
默认情况下导入到您的js文件中
underscore
,您可以使用命令lodash
安装meteor npm install lodash
。然后将lodash作为import _ from 'lodash';