vue-event.modifier

事件修饰符

by li gang

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.0/vue.js"></script>

<body>
  <!-- 不接受冒泡上来的事件 -->
  <div id="app" @click.self="clickApp($event)">
    <button @click="clickBtn($event)">通过event阻止行为</button>
    <!-- 方法处理器,不能使用clickBtn() -->
    <a href="http://blog.csdn.net/ligang2585116" target="_blank" @click.prevent.self="clickBtn">Button<span>阻止所有的点击</span></a>
    <a href="http://blog.csdn.net/ligang2585116" target="_blank" @click.self.prevent="clickBtn">Button<span>只会阻止元素上的点击</span></a>
  </div>
</body>

CSS

#app {
  height: 200px;
  width: 500px;
  border: 1px solid red;
}

span {
  display: inline-block;
  border: 1px solid blue;
}

JavaScript

const app = new Vue({
  el: '#app',
  methods: {
    clickApp(event) {
        console.log('clickApp');
        console.log(event);
      },
      clickBtn(event) {
        if (event) {
          event.stopPropagation();
          event.preventDefault();
        }
        console.log('clickBtn');
      }
  }
});