vue的自定义组件中可以定义事件吗?

如果我想在自定义组件中定义事件的话该怎么写呢?求大神解答

代码如下,如果我想加一个click事件可以实现吗?

 template: '<h1 @click="hi">{{a}}</h1>'

全部代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <title>Title</title>
</head>
<body>
    <div id="app">
        <!-- <h1 is="test"></h1> -->
        <test></test>
    </div>
    <script type="text/javascript">
        var mytest = Vue.extend({
            template: '<h1 @click="hi">{{a}}</h1>',
            data: function () {
                return{
                    a: "this is a test"
                }
            }
        });
        var vm = new Vue({
            el: "#app",
            components: {
                "test": mytest
            }
        });
    </script>
</body>
</html>
阅读 4.2k
4 个回答

可以啊,只要在写成<h1 @click="hi()">{{a}}</h1>,然后在methods里写hi这个函数就行了,还是说你想添加两个点击事件?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <title>Title</title>
</head>
<body>
    <div id="app">
        <!-- <h1 is="test"></h1> -->
        <test></test>
    </div>
    <script type="text/javascript">
        var mytest = Vue.extend({
            template: '<h1 @click="hi()">{{a}}</h1>',
            data: function () {
                return{
                    a: "this is a test"
                }
            },
            methods: {
              hi: function() {
                  alert(this.a);
              }
            }
        });
        var vm = new Vue({
            el: "#app",
            components: {
                "test": mytest
            }
        });
    </script>
</body>
</html>

@click.native

**以下是实现代码 亲测有效 O(∩_∩)O哈哈~
主要的点 还是子组件的方法创建 就是在创建组件的时候 加v-on:event=“方法名称” 然后 子组件自己处理自己的事件 在methods中 声明这个事件 并做处理**

<div id="demo">
    <my-component>
        <!--<p slot="main-text">Hello!</p>-->
    </my-component>
</div>
<script>
  Vue.component('my-component',{
      template:'\
      <button class="container" v-on:click="doThis">\
      <slot name="main-text">\
      这里显示</slot>\
      </button>',
      data:function () {
          return{
          }
      },
      methods:{
          doThis:function () {
              alert(1111)
          }
      }
  })
    new Vue({
        el:"#demo",
        data:{

        }
    })
</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题