Vue:将多个@click传递给组件[重复]

Posted

技术标签:

【中文标题】Vue:将多个@click传递给组件[重复]【英文标题】:Vue: Passing multiple @click into components [duplicate] 【发布时间】:2019-08-06 22:21:53 【问题描述】:

我有一个刀片视图模板,我将其传递给父函数,如下所示:

<Flash 
    :flash-status="flashStatus" 
    :flash-content="flashContent"
    v-if="flashStatus === true"
    @click="hideFlashMsg">

</Flash>

但现在我需要传入另一个函数并尝试了这个,但它不起作用:

<Flash 
    :flash-status="flashStatus" 
    :flash-content="flashContent"
    v-if="flashStatus === true"
    @click="hideFlashMsg"
    @click="addNums">

</Flash>

如何为同一个事件设置两个事件监听器?

【问题讨论】:

【参考方案1】:

你可以像这样调用多个点击函数:

@click="hideFlashMsg(); addNums();"

或者,让一个函数处理多个其他函数。

clickhandler()
    this.function1();
    this.function2();

【讨论】:

【参考方案2】:

v-on 指令可以接受一个为同一事件设置多个侦听器的对象:


  EVENTNAME: [HANDLER_1, HANDLER_2, ... HANDLER_N]

所以你可以这样做:

<Flash v=on" click: [hideFlashMsg, addNums] " />

new Vue(
  el: '#app',
  methods: 
    hideFlashMsg() 
      console.log('hideFlashMsg')
    ,
    addNums() 
      console.log('addNums')
    
  
)
<script src="https://unpkg.com/vue@2.6.9"></script>

<div id="app">
  <button v-on="click: [hideFlashMsg, addNums]">Click</button>
</div>

【讨论】:

以上是关于Vue:将多个@click传递给组件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Vue3 中传递多个道具

Vue - 将插槽传递给子组件[重复]

Vue - 将相同的数据从一个组件传递到多个组件

如何将道具传递给vue中的子组件

Vue - 无法将特定值传递给更高的组件

将父母道具传递给Vue,js中的插槽