0

一切都工作得很好,直到突然之间就不行了。

我有一个带有点击事件的按钮。当我点击它时,它调用方法 giveToParent() 发出一个字符串:

<template>
  <div>
    <button @click="giveToParent()">search</button>
  </div>
</template>

<script>
export default {
...
  methods: {
    giveToParent() {
      var sql = "select * from xxxxx where min_Price=20";

      this.$emit("clicked", sql);


      console.log(this.$emit("clicked", sql));
    },

在父级 (app.vue) 中,它看起来像这样:

<template>
  <Menu_Filter @clicked="test()"></Menu_Filter>
</template>

<script>
import Menu_Filter from "./components/Menu_Filter";
import { loadMap } from "./packs/my_js_file.js";

export default {
...
  },
  methods: {
    test(value) {
      logInConsole(value);
      loadMap(value);
    },
    
  },
};

错误信息如下: 错误 如您所见,它说 object is not a function,这是真的,因为 $emit 函数似乎是一个 vue 组件。我可以毫无问题地记录其他内容,所以它必须是 $emit 函数。

奇怪的是,这一切都奏效了,然后突然就不行了。我什至在我的笔记本电脑上有一个旧版本,当我试图在那里执行它时,它也失败了。

我真的不知道为什么它不再起作用了。

4

2 回答 2

0
<template>
  <div>
    <button @click="giveToParent">search</button>
  </div>
</template>

这应该可以解决问题,v-on 不喜欢将其作为没有参数的函数调用。

于 2021-09-30T07:41:04.050 回答
0

你可以测试click.native吗?我不确定,但我认为你可以用这个技巧解决它

<div id="app">
    <Menu_Filter v-on:click.native="testFunction"></Menu_Filter>
</div>
于 2021-09-30T07:59:04.243 回答