select2 事件在 angular4 中触发两次

Posted

技术标签:

【中文标题】select2 事件在 angular4 中触发两次【英文标题】:select2 event fires twice in angular4 【发布时间】:2018-04-04 20:56:50 【问题描述】:

标记

<select2 
         [data]="data"
         [width]="1024"
         [options]="options"
         [value]="selectedData"
         (valueChanged)="onTagChanged($event)">
</select2>

Angular 4 组件

onTagChanged(data:  value: string[] ): void 
    console.log(data);
    this.selectedData = data.value;

event valueChanged 触发两次,如何防止。

【问题讨论】:

在什么情况下? @RahulSingh:从 select2 中选择任何值时,onTagChanged 函数调用了两次。控制台打印两次。 尝试onSelect 事件而不是valueChanged @AvneshShakya:这行不通。 @KetanAkbari 你能记录下这个事件吗?就我而言,我寻找event.isUserInput === true 第一个事件有这个,第二个没有。 【参考方案1】:

 onTagChanged(data:  value: string[] ): void 
    console.log(data);
    this.selectedData = data.value;

您再次更改了值,即 this.selectedData,因此值会更改两次,一次是在您选择一个值时,一次是您手动更改值。 由于该值与 selectedData 绑定,因此您无需在上述方法中显式更改它。

[value]="selectedData"

【讨论】:

【参考方案2】:

你的代码应该是这样的

<select2 
         [data]="data"
         [width]="1024"
         [options]="options"
         (valueChanged)="onTagChanged($event)">
</select2>

只需删除 [value]="selectedData"

【讨论】:

以上是关于select2 事件在 angular4 中触发两次的主要内容,如果未能解决你的问题,请参考以下文章

悬停事件在jQuery中触发两次(进入和离开)?

Socket.io:如果在快速路由中使用,事件会触发两次

jquery触发两次onchange事件

解决label 和checkbox点击事件触发两次问题

select2 事件在 angular4 中触发两次

iScroll中事件点击触发两次解决方案