【问题标题】:How to add inline @change or @update function?如何添加内联@change 或@update 功能?
【发布时间】:2021-04-17 12:34:51
【问题描述】:

这是我的代码 sn-p。

<template>
   <b-form-input
     type="text"
     name="title"
     class="form-control"
     placeholder="Post Title"
     @update="onUpdate"
    />
</template>

<script>
 export default{
   methods:{
      onUpdate(value) {
        console.log(value)
      }
   }
 }
</script>

当我试图使更新函数内联时:

<b-form-input
     type="text"
     name="title"
     class="form-control"
     placeholder="Post Title"
     @update="()=>{console.log(value)}"      //which is wrong
/>

什么是正确的格式?提前致谢!

CodeSandbox 游乐场: https://codesandbox.io/s/mystifying-benz-w8wgu?file=/src/FormFields.vue

【问题讨论】:

  • 试试 //@change 或 @input
  • 考虑@update 是强制的情况

标签: vue.js vuejs2 bootstrap-vue


【解决方案1】:

使用内联处理程序是正确的,它的处理程序参数表示键入的值:

<b-form-input
     type="text"
     name="title"
     class="form-control"
     placeholder="Post Title"
     @update="($event)=>{console.log($event)}"    
/>

....
  created() {
    this.console = window.console;
  },

【讨论】:

【解决方案2】:

您可以使用内联函数,但表达式是在 Vue 实例的上下文中计算的。除了 console 不是 Vue 实例的属性之外,您尝试的方法都可以。但是,如果您愿意,可以将 console.log 方法添加到组件的方法中:

@update="()=>{ log(value) }" 
methods: {
  log: console.log
}

如果您想像这样明确地使用console.log 语法,则必须将console 添加到数据中:

@update="()=>{ console.log(value) }"
data() {
  return {
    console: console    // just `console` would work too
  }
}

【讨论】:

  • 如果我需要添加任何自定义函数,例如:@update="($event) => setField(value, "title")" 怎么办?该怎么做?
  • 没有必要这样做。与@update="setField(value, 'title')" 相同。您已经可以为处理程序设置方法。如果setField 不是方法,请按照我在方法中添加console.log 的方式添加它。
猜你喜欢
  • 2016-04-11
  • 2012-08-31
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
相关资源
最近更新 更多