Val*_*avi 9 javascript typescript angular
我有文本框并分配给它keyup
事件搜索功能,但我希望它发生延迟,而不是每个按键
这是html代码:
<input type="text" [(ngModel)]="searchedKPI" (keyup)="searchConfigTree()">
Run Code Online (Sandbox Code Playgroud)
这是ts代码:
list = list.filter(item => item.label.toLocaleLowerCase().includes(this.searchedKPI.toLocaleLowerCase())).slice();
Run Code Online (Sandbox Code Playgroud)
这里是我想搜索"文本"字符串的例子,但事件发生了4次,我想这只发生一次"text"字符串:
什么解决方案?
Sur*_*yan 12
欢迎来到Observable的世界.只需使用Observable即可获得所需的结果.获取组件中输入的引用并使用此代码.debounceTime
将让事件至少在1 second
之前的触发器之后触发.keyup
当用户快速输入时,它将不允许您触发.
Observable.fromEvent(yourInput, 'keyup').debounceTime(1000).subscribe(value => /* */)
Run Code Online (Sandbox Code Playgroud)
在该subscribe
方法中,您可以编写逻辑.这value
是输入的值.
查看模板.html
<input type="text" [(ngModel)]="searchedKPI" (keyup)="searchConfigTree()" #something>
Run Code Online (Sandbox Code Playgroud)
component.ts(不要忘记实现AfterViewInit)
source: any;
@ViewChild("something") something:ElementRef;
ngAfterViewInit(): void {
this.source = fromEvent(this.something.nativeElement, 'keyup');
this.source.pipe(debounceTime(1200)).subscribe(c =>
{
list = list.filter(item => item.label.toLocaleLowerCase().includes(this.searchedKPI.toLocaleLowerCase())).slice();
}
);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5812 次 |
最近记录: |