问。 (ionInput)
和(ionChange)
之间的区别是什么?在哪种情况下,我应该选择其中任何一个吗?
我已尝试过如下所示的两个代码,它会得到与我预期相同的结果。
使用ionInput事件的示例代码
<ion-searchbar type="text" maxlength="18" placeholder="Search" debounce="0"
[(ngModel)]="usernameText" (ionInput)="findUserWithUsername()"></ion-searchbar>
使用ionChange事件的示例代码
<ion-input type="text" maxlength="18" placeholder="Search" clearInput
[(ngModel)]="usernameText" (ionChange)="findUserWithUsername()"></ion-input>
答案 0 :(得分:5)
答案是:取决于您使用的组件。
首先,您需要知道什么是ionInput
和ionChange
。它是EventEmitter,它在每个组件内部定义。所以两个组件之间会有所不同。 ion-tabs
有ionChange
,只要所选标签发生变化,它就会发出。 ion-input
有ionChange
,只要输入值发生变化,就会发出ionInput
。所以这些完全不同。
第二,并非所有组件都有ionChange
。与ion-input
相同。ionInput
只有ion-searchbar
。但是ionInput
同时具备这两种功能。
最后,只需找出ionChange
的{{1}}和ion-searchbar
的差异。让我们创建一个小测试:
在home.html
:
<ion-searchbar placeholder="Search" debounce="0" (ngModel)]="searchText" (ionChange)="ionChange()" (ionInput)="ionInput()"></ion-searchbar>
在home.ts
:
searchText = "111";
ionViewDidLoad(){
//Change the searck value after 2s the page loaded
setTimeout(()=>{
console.log("change from the code");
this.searchText = "222";
},2000)
}
当用户在文本框中输入时,两个事件都被触发。但是,当代码更改searchText
的值时,只会触发ionChange
。因此,我们可以得出结论,只要用户在文本框中输入,就会触发ion-searchbar
组件ionInput
事件中的,并且只要文本框的值发生变化,就会触发ionChange
。
这是live example
答案 1 :(得分:2)
我尝试了(input)
,但没有在其中发生任何事件。
然后我尝试(input)
然后它对我有效。
因此,请确保您是正确的,否则我可能会在某些时候失踪。
(ionChange)
&amp; (input)
(ionChange)
:当用户尝试在输入字段中输入值时会触发此事件,即使用户复制相同的值并将其粘贴到字段中,它也会触发。因为它不会输入哪个值。希望这些信息能为您提供帮助。
答案 2 :(得分:0)
另一个显着的区别是您使用debounce
属性。 debounce
仅影响ionChange
,但不影响ionInput
。在特定情况下,当您想在触发ionChange
事件之前执行某些操作时,这可能会很方便。
在debounce
上使用[(ngModel)]
时,最好感觉到ion-searchbar
的效果,debounce
的默认ionInput
为250ms。当您使用ionChange
时,该值将始终忽略在过去250毫秒内键入的字符,这意味着除非debounce
属性设置为0,否则node scripts/build.js
是理想的选择。