【问题标题】:Vuetify - How to handle click event on <v-btn>?Vuetify - 如何处理 <v-btn>​​ 上的点击事件?
【发布时间】:2019-12-10 15:35:14
【问题描述】:

我是vuetifyvue 的新手,试图弄清楚如何处理&lt;v-btn&gt; 上的点击事件。 (使用vue 2.6.10vuetify 2.0.0

(惊讶地发现在 vuetify 官方文档和谷歌搜索后,没有找到一个可以工作的代码 sn-p。)


代码

  • 按钮

    &lt;v-btn color="primary" rounded @onclick.native="startQuiz"&gt;Start&lt;/v-btn&gt;

  • 来自包含组件的methods 部分的处理程序方法。

    startQuiz() {
      console.log('start');
      alert('start');
    }
    

点击按钮后,浏览器看不到控制台输出,也没有弹出警告。

在浏览器的 vue 插件中,在 Events 子标签下,我可以看到以下事件:

click $emit by &lt;VBtn&gt;


问题

  • 点击按钮时如何调用startQuiz方法?

更新 - 总结

我检查了以下链接:

http://stackoverflow.com/questions/45369553/difference-from-click-and-v-onclick-vuejs

原来它只是v-on:click 的简写,而onclick 来自javascript,在vue 的上下文中无效。

【问题讨论】:

  • 应该是@click="startQuiz"
  • 只是为了确定。你试过@onclick="startQuiz"@click="startQuiz"吗?
  • @EricWangyou 绝对应该查看事件修饰符以更好地理解它们。 @click.xxx 对于防止默认操作或停止传播等非常有用... vuejs.org/v2/guide/events.html#Event-Modifiers
  • 不要使用 .native 修饰符,除非您 100% 确定 root element of the component broadcasts the event
  • @TimWickstrom 我已经阅读了大部分事件修饰符,.once 修饰符在 Start 按钮上特别有用,谢谢。

标签: javascript vue.js vuejs2 vuetify.js


【解决方案1】:

这样做;

<v-btn color="primary" rounded @click.prevent="startQuiz">Start</v-btn>

methods:{
     startQuiz(){
           console.log('start')
     }
}

【讨论】:

    【解决方案2】:

    我建议你阅读VueJS Events Docs,在那里你会得到你需要的一切。 有一个文档示例:

    <div id="example-2">
      <!-- `greet` is the name of a method defined below -->
      <button v-on:click="greet">Greet</button>
    </div>
    
    var example2 = new Vue({
      el: '#example-2',
      data: {
        name: 'Vue.js'
      },
      // define methods under the `methods` object
      methods: {
        greet: function (event) {
          // `this` inside methods points to the Vue instance
          alert('Hello ' + this.name + '!')
          // `event` is the native DOM event
          if (event) {
            alert(event.target.tagName)
          }
        }
      }
    })
    

    【讨论】:

    • 这个问题与 Vuetify 按钮特别相关。
    • 嗨 Pedro,问题是关于 Vuetify,但核心是 VueJs 概念。
    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多