这是一个代码示例.

Vue.component('button-counter', {
  template: '<button v-on:click="emit_event">button</button>',
  methods: {
    emit_event: function () {
      this.$emit('change', 'v1', 'v2', 'v3')  // Here I emit multiple value
    }
  },
})
new Vue({
  el: '#parent',
  data: {
    args: ""
  },
  methods: {
    change: function (...args) {
      this.args = args
      console.log(args)
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.common.js"></script>
<div id="parent">
  {{ args }} <br />
  <button-counter v-on:change="change(1234, $event)"></button-counter>
</div>

从父组件中,我想获取参数pass by change()(在本例中为1234),但也要获取子组件发出的每个值.

有办法吗?我知道我可以emits 一个数组来捕捉多个值.但有些库只是发出多重值.

这是上面例子中的代码笔.

推荐答案

定义一个处理程序,该处理程序接受来自事件的多个参数,并将它们传递给除静态参数之外的change方法.

<button-counter v-on:change="(...args)=>this.change(1234,...args)"></button-counter>

或者

<button-counter v-on:change="(...args)=>this.change([1234,...args])"></button-counter>

把你的方法改成

change: function (args) {
  this.args = args
  console.log(args)
}

Vue.js相关问答推荐

如何在Vue 3中将动态特性从主零部件同步到子零部件

Shopware 6,使用 vue-test-utils 进行Jest 测试:渲染模板上的意外行为

在 v-for 中定义变量有什么问题吗?

vue 不重新渲染数据更改

vuex 未知动作类型:addTodo

vue js导航到带有问号的url

禁用 vue-cli webpack 编码图像 base64

VueJS 插件的如何react式绑定?

Vuelidate 判断true/false

如何在 vue.js 中删除类

在没有组件的vue js中拖放

使用 vee-validate 在 vue js 中进行验证有错误

如何根据生产或开发模式读取不同的 .env 文件?

如何在 vuejs 中异步加载图像 src url?

如何将 mapActions 与 vue + Typescript 类组件一起使用?

使用 VueJS 在 v-for 中转换

从我的服务访问路由实例

交换数组项

错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (88)

axios 拦截器响应未定义