VUE - 基础语法(事件)

v-on指令,给元素绑定事件:

为事件绑定简单表达式:

<div id="test">
  <input v-on:click="counter+=1" type="button" value="点我"/>
  <p>按钮被点了{{counter}}次</p>
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {
      counter : 0
    }
  });
</script>

为事件绑定方法:

<div id="test">
  <input v-on:click="sayHi" type="button" value="点我弹出一个提示"/>
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {},
    methods : {
      sayHi : function(){
        alert("你好呀!");
      }
    }
  });
</script>

可以向为事件绑定的方法中传入参数:

<div id="test">
  <input v-on:click="sayMyName('傻屌')" type="button" value="名字"/>
  <input v-on:click="sayMyAge(24)" type="button" value="年龄"/>
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {},
    methods : {
      sayMyName(name){
        alert(name);
      },
      sayMyAge(age){
        alert(age);
      }
    }
  });
</script>

可以向为事件绑定的方法中传入原始DOM事件:

<div id="test">
  <input v-on:click="sayMyValue($event)" type="button" value="我的值"/>
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {},
    methods : {
      sayMyValue(event){
        if(event){
            alert(event.target.value);
        }else{
            alert("没传进来");
        }
      }
    }
  });
</script>

v-on指令可以被简写为@:

<div id="test">
  <input @:click="sayMyValue($event)" type="button" value="我的值"/>
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {},
    methods : {
      sayMyValue(event){
        alert(event.target.value);
      }
    }
  });
</script>

 

事件修饰符,常用操作的简写形式:

v-on:事件名.prevent:阻止标签默认行为

<form id="test" action="test.html">
  <!--只写修饰符,阻止了跳转-->
  <a v-on:click.prevent href="http://www.baidu.com">跳转1</a>
  <!--写了修饰符并绑定事件,阻止了跳转并执行该事件-->
  <a v-on:click.prevent="sayLink" href="http://www.baidu.com">跳转2</a>
  <!--只写修饰符,阻止了提交-->
  <input v-on:click.prevent type="submit" value="提交1"/>
  <!--写了修饰符并绑定事件,组织了提交并执行该事件-->
  <input v-on:click.prevent="sayBtn" type="submit" value="提交2"/>
</form>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    data : {},
    methods : {
      sayLink : function(){
        alert("跳转");
      },
      sayBtn : function(){
        alert("提交");
      }
    }
  });
</script>

v-on:事件名.passive:告诉浏览器,事件绑定的方法中不会阻止浏览器的默认行为

补充:Chrome为addEventListener加入这个属性,是想要优化页面的滑动性能,这个特性只支持mousewheel/touch相关的事件。

注意:.passive和.prevent从意思上看是完全相反的,如果同时设置了这两个修饰符,.prevent的行为会被忽略并得到了浏览器发出的黄牌警告,所以不要一起用啦。

v-on:事件名.once:该事件只能被触发一次

<div id="test">
  <p v-on:click="sayLove">不停说爱我</p><!--点几次弹出几次-->
  <p v-on:click.once="sayLove">说一次爱我</p><!--只能弹一次,后来就不好使啦-->
</div>
<script type="text/javascript">
  var obj = new Vue({
    el : "#test",
    obj : {},
    methods : {
      sayLove : function(){
        alert("爱你呦");
      }
    }
  });
</script>

与事件执行顺序相关的修饰符:

 

按键修饰符,常用键值的简写形式:

回车:.enter
TAB键:.tab
删除和退格:.delete
ESC键:.esc
空格:.space
向上:.up
向下:.down
向左:.left
向右:.right
ALT键:.alt
CTRL键:.ctrl
SHIFT键:.shift
MAC中的COMMOND/WIN中的WINDOWS:.meta

 

posted @ 2018-11-02 18:13  月亮和电池  阅读(411)  评论(0编辑  收藏  举报