【问题标题】:is there a way to change the function name of the click event?有没有办法改变点击事件的函数名?
【发布时间】:2021-02-17 05:09:13
【问题描述】:

我需要更改 v-on:click="function1" 里面的方法名, 但是当我在 html 中对 function1 进行硬编码时,按钮工作并且 function1 执行但是当我通过 Vue 的 data 属性传递“function1”属性时,按钮不起作用并且 function1 不执行。请帮我。谢谢

button type="button" v-on:click="obj.continueButton" class="btn">Continue</button>

var test = new Vue({
el: "#app",
data: {
    obj : { 
            continueButton: 'function1'
    }

【问题讨论】:

  • 你可能做错了。您需要使用此代码实现什么目标?
  • 我希望能够使用此代码在某处更改按钮的功能 this.obj.continueButton = 'secondFunc';
  • 点击按钮后控制台是否出现错误?
  • [Vue 警告]:v-on 处理程序中的错误:“TypeError:handler.apply 不是函数”(在 中找到) warn @ vue.js:634 logError @ vue.js :1893 globalHandleError @ vue.js:1888 handleError @ vue.js:1848 invokeWithErrorHandling @ vue.js:1871 invoker @ vue.js:2184 original._wrapper @ vue.js:7547 vue.js:1897 TypeError: handler.apply is在 HTMLButtonElement.invoker (vue.js:2184) 在 HTMLButtonElement.original._wrapper (vue.js:7547) 的 invokeWithErrorHandling (vue.js:1863) 不是函数
  • 这是由于obj.continueButton 具有字符串值而不是函数。

标签: javascript vue.js


【解决方案1】:

(编辑了一个不正确的早期答案)

你可以这样尝试:

<button type="button" v-on:click="execFn(obj.continueButton)" class="btn">
  Continue
</button>

...
data: {
  obj: {
    continueButton: 'function1'
  }
},
methods: {
  execFn(name) {
    this[name]();
  },
  function1() {
    // do something
  },
  function2() {
    // do something else
  }
}

【讨论】:

  • 不清楚,没看懂,function2呢?
  • 我已经扩展了我的示例,表明您可以定义任意数量的函数,即使您更改了obj.continueButton 的值,它也应该正确执行。
  • 没问题,抱歉我一开始说的不够清楚:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多