在离子搜索框中设置去抖,角度不起作用

use*_*134 2 ionic-framework angular

我试图让用户通过在文本框中搜索来搜索数据库以提取结果,并且我不希望每当在文本框中插入变量时都调用 API,而是在调用之前等待 3 秒到 API。我正在使用去抖动,但它不起作用

<ion-searchbar
[(ngModel)]="userSearch"
          [debounce]="4000"
           (ionInput)="liveSearch($event)"
           placeholder="Search for Politics, Entertainment, Sports..."
></ion-searchbar>
Run Code Online (Sandbox Code Playgroud)

JS

import { Component } from '@angular/core';
import { NewsService } from '../services/news-service.service';

@Component({
  selector: 'app-tab3',
  templateUrl: 'tab3.page.html',
  styleUrls: ['tab3.page.scss']
})
export class Tab3Page {

  userSearch: any;
  searchResults: any= [];

  constructor(private newsService: NewsService) {}

  liveSearch() {
    this.newsService.searchNews(this.userSearch).subscribe(data => {
      this.searchResults = data;
      console.log(data);
    });
  }

}
Run Code Online (Sandbox Code Playgroud)

小智 6

您应该更改(ionInput)="liveSearch($event)"(ionChange)="liveSearch($event)",因为 debounce 属性只会改变ionChange行为。

  • 重要提示:对于 Ionic 7(甚至更早),这不再正确,并且可能会显着改变您对 ion-searchbar 的期望。请参阅文档:“当用户修改 &lt;ion-searchbar&gt; 元素的值时,将触发 ionChange 事件。与 ionInput 事件不同,**onChange 事件不一定会在每次对元素值的更改时触发**。” (2认同)