javascript - 在 vue 中发出带参数的事件

标签 javascript vue.js components

我正在尝试使用这样的参数发出函数。

template: `
    <div class="searchDropDown">
    <div class="dropdown is-active">
    <div class="dropdown-trigger">
      <button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
        <span>{{selectedItem}}</span>
      </button>
    </div>
    <div class="dropdown-menu" id="dropdown-menu" role="menu">
      <div class="dropdown-content">
        <a class="dropdown-item" v-for="item in drop" @click="$emit('select-menu-item($event)')">
          {{item.name}}
        </a>
      </div>
    </div>
  </div>
    </div>
  `

这是我正在尝试将项目像参数一样传递给方法。

这是我尝试发出函数的组件:

<search-component v-bind="searchProps" @select-menu-item="selectedITem($event)"></search-component>

这是我的方法:

selectedITem(arg1) {
      console.log("cl")
      console.log(arg1)
    }

如果我不尝试传递参数,那么一切正常,所以我的方法 selectedITem 正在运行。当我尝试像那样传递参数时,什么也没发生,我也没有收到任何错误。

最佳答案

$emit() 中的以下参数是您发出的函数中的参数。

$emit('select-menu-item', $event, 1, 2, 3, 4, "cupcakes")

并在您的组件方法中。

selectMenuItem: function(evt, num1, num2, num3, num4, food){

}

并且在您实际的组件标记中,您不需要添加参数,只需编写对方法的引用不带括号

<search-component v-bind="searchProps" @select-menu-item="selectMenuItem">

样本

window.onload = function(){
 const component = function() {
    return {
       template: `
       <div>
         <button @click="$emit('click-me', 'foobar')">
            Click Me
         </button>
       </div>
       `,
       props: ["data"]
    }
 }

 new Vue({
       el: container,
       data: {},
       components: { "my-component": component(), },
       methods: {
          clickMe: function(str){
            console.log(str);
          }
       }
    });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="container">
  <my-component :data=$data @click-me="clickMe"></my-component>
</div>

关于javascript - 在 vue 中发出带参数的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738919/

相关文章:

javascript - 表单验证未正确响应

javascript - Node.js 等待异步函数完成,然后继续执行其余代码

javascript - Axios 参数中存在多个值(逗号分隔)

javascript - Socket.io 路径在路径末尾添加斜杠

angular - 在组件模板中使用 eventEmitter.emit()

javascript - onclick 删除影响其他按钮

javascript - 响应式 Jquery 切换命令

vue.js - Vuex - 在 api 调用之前或之后提交状态更改?

java - Wicket - 实现复杂组件的最佳方式

angular - Angular 中关于 routerLink 和展示组件的最佳实践是什么?