Nic*_*las 14 lodash debounce angular
如何去除在"keyUp"事件中调用的函数?
这是我的代码:
我的功能
private handleSearch(searchTextValue: string, skip?: number): void {
this.searchTextValue = searchTextValue;
if (this.skip === 0 || typeof skip === "undefined") {
this.skip = 0;
this.pageIndex = 1;
} else {
this.skip = skip;
}
this.searchTextChanged.emit({ searchTextValue: searchTextValue, skip: this.skip, take: this.itemsPerPage });
}
Run Code Online (Sandbox Code Playgroud)
我的HTML
<input type="text" class="form-control" placeholder="{{ 'searchquery' | translate }}" id="searchText" #searchText (keyup)="handleSearch(searchText.value)">
Run Code Online (Sandbox Code Playgroud)
我正在努力实现的是handleSearch在用户停止输入后稍微调用一下.
我发现我可以使用lodash's _debounce(),但我还没有找到如何把它放在我的keyUp活动上.
Plo*_*ppy 35
您可以创建一个rxjs/Subject并在keyup上调用.next()并使用您想要的debounceTime订阅它.
我不确定这是否是正确的方法,但它有效.
private subject: Subject<string> = new Subject();
ngOnInit() {
this.subject.debounceTime(500).subscribe(searchTextValue => {
this.handleSearch(searchTextValue);
});
}
onKeyUp(searchTextValue: string){
this.subject.next(searchTextValue);
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<input (keyup)="onKeyUp(searchText.value)">
Run Code Online (Sandbox Code Playgroud)
Arr*_*ory 18
Rx / JS的更新6.使用管道运算符。
import { debounceTime } from 'rxjs/operators';
this.subject.pipe(
debounceTime(500)
).subscribe(searchTextValue => {
this.handleSearch(searchTextValue);
});
Run Code Online (Sandbox Code Playgroud)
其他一切都一样
| 归档时间: |
|
| 查看次数: |
11032 次 |
| 最近记录: |