微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vue:TypeError:_vm.myFunction 不是函数

如何解决Vue:TypeError:_vm.myFunction 不是函数

我正在尝试在 .vue 文件添加一个简单的按钮,以使用以下代码将某些内容记录到控制台:

<template>
  <div>
    <button v-on:click="sayHello()">Click me</button> 
  </div>
</template>
<script>
export default {
  data() {
  },methods: {
    sayHello: function () {
      console.log('Hello!')
    }
  },};

我在控制台中收到以下错误

TypeError: _vm.sayHello is not a function

Property or method "sayHello" is not defined on the instance but referenced during render. Make sure that this property is reactive,either in the data option,or for class-based components,by initializing the property.

我看过一些教程说你应该把它添加到数据中,但它只是说 sayHello() 是未定义的,或者当我在 sayHello() 中定义 data 时,它说 {{ 1}} 已定义但从未使用过。

我什至尝试过以下操作:

sayHello()

但它给了我这个错误

<button v-on:click="console.log('Hello!')">Click me</button>

有人可以帮我解决这个问题吗?这可能是我没有尝试过的非常明显的事情。

解决方法

您没有在 <script> 之后关闭标记 export default { ... }

为了更好的可读性,我编辑了语法。

<template>
  <div>
    <button @click="sayHello">Click me</button> 
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },methods: {
    sayHello() {
      console.log('Hello!');
    },},};
</script>

对于 click 事件不一定需要调用带有 () 的方法。但尽管两种变体都是正确的。

,

错误在这里

wrong
v-on:click="sayHello()" 


correctly
v-on:click="sayHello" 
<template>
  <div>
    <button @click="sayHello">Click me</button> 
  </div>
</template>
<script>
export default {
  data() {
  },methods: {
    sayHello () {
      console.log('Hello!')
    }
  },}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。