Vue 事件参数传递

1. 问题

components

组件内部抛一个事件

onChange (value) {
  this.$emit('OnChange', value)
}

Page

外部使用时监听,并且执行一个回调

1.1 什么都不传

<tag @onChange="log"></tag>
<script>
  methods: {
    log (value) {
      console.log(value)
    }
  }
</script>

返回

value

1.2 传字符串

<tag @onChange="log('change')"></tag>
<script>
  methods: {
    log (value) {
      console.log(value)
    }
  }
</script>

返回

'change'

2. 期望达到的效果

既返回原始value,也返回字符串

'change' + value

3. 权宜之计

模板式写法无法做到,只能这样写

<tag @onChange="log"></tag>
<script>
methods: {
  log (value) {
    console.log ('change' +  value)
  }
}
</script>

使用函数式组件也许可以,还没有尝试

4. 换种方法

把onChange本身传递的value作为函数的参数向下传递

<tag @onChange="(value) => log('change'+value)"></tag>
<script>
methods: {
  log (value) {
    console.log (value)
  }
}
</script>

返回

'change' + value

发表评论

电子邮件地址不会被公开。