2.VueJS 常用系统指令

2.1 v-on
可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码

2.1.1 v-on:click

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>methods</title>
        <script src="js/vuejs-2.5.16.js"></script>        
    </head>
    <body>
        <div id="app">
            {{message}}
            <button v-on:click="fun1('good')">点击改变</button>
        </div>
        <script>
          new Vue({
             el:'#app',
             data:{
                 message:'hello,kris!'
             },
             methods:{
                 fun1:function(msg){
                     this.message=msg;
                 }
             }
          })        
        </script>
    </body>
</html>

2.1.2 v-on:keydown

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>阻止默认行为</title>
        <script src="js/vuejs-2.5.16.js"></script>    
    </head>
    <body>
        <div id="app">
            <input type="text" v-on:keydown="fun3($event)" />
        </div>
        <script>
          new Vue({
             el:'#app',
             methods:{
                 fun3:function(event){
                  if(!((event.keyCode>=48&&event.keyCode<=57)||event.keyCode==8||event.keyCode==46)){
                      alert(event.keyCode);
                      event.preventDefault();
                 }
             }
          },
          }
          )        
        </script>
    </body>
</html>

2.1.3 v-on:mouseover

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>阻止冒泡事件</title>
        <script src="js/vuejs-2.5.16.js"></script>
        
    </head>
    <body>
        <div id="app">
            <div v-on:mouseover="fun4a()">
                <textarea v-on:mouseover="fun4b($event)"></textarea>
            </div>
        </div>
        <script>
          new Vue({
             el:'#app',
             methods:{
                 fun4a(){
                     alert("这是div域");
                 },
                 fun4b(event){
                     alert("这是一个文本域");
                     event.stopPropagation();
                 }
             }
          }
          )        
        </script>
    </body>
</html>

2.1.4 事件修饰符
Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。 Vue.js通过由点(.)表示的指令后缀来调用修饰符。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>事件修饰符</title>
        <script src="js/vuejs-2.5.16.js"></script>
        
    </head>
    <body>
        <div id="app">
            <form @submit.prevent action="http://www.baidu.com">
                <input type="submit" value="百度一下" />
            </form>
            <div @click="fun5">
                <a @click.stop href="http://www.baidu.com" >百度一下</a>
            </div>
        </div>
        <script>
            new Vue({
                el:"#app",
                methods:{
                    fun5:function(){
                        alert("百度一下");
                    }
                }
            }
            );
        </script>
    </body>
</html>

2.1.5 按键修饰符
Vue 允许为 v-on 在监听键盘事件时添加按键修饰符
全部的按键别名:
.enter .tab .delete (捕获 "删除" 和 "退格" 键) .esc .space .up .down .left .right .ctrl .alt .shift .meta
 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>按键修饰符</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <input type="text" v-on:keydown.delete="fun6($event)">
        </div>
        <script>
            new Vue({
                el:"#app",
                methods:{
                    fun6:function(event){
                         alert("你按了删除");
                         event.preventDefault();
                    }
                }
            }
            );
        </script>
    </body>
</html>

v-on简写方式

<!-- 完整语法 --> <a v-on:click="doSomething">...</a> <!-- 缩写 --> <a @click="doSomething">...</a>
<p><!-- Alt + C --> <input @keyup.alt.67="clear"> <!-- Ctrl + Click --> <div @click.ctrl="doSomething">Do something</div>

2.2 v-text与v-html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>v-text/v-html</title>
        <script src="js/vuejs-2.5.16.js"></script>
   </head>
    <body>
        <div id="app">
            <div v-text="message"></div>
            <div v-html="message"></div>
        </div>
        <script>
            new Vue({
                el:"#app",
                data:{
                    message:"<h1>hello kris</h1>"
                }
            }
            );
        </script>
    </body>
</html>

2.3 v-bind
插值语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind指令
 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>v-bind</title>
        <script src="js/vuejs-2.5.16.js"></script>
   </head>
    <body>
        <div id="app">
            <font v-bind:color="red">hello</font>
            <font :color="green">kris</font>
        </div>
        <script>
            new Vue({
                el:"#app",
                data:{
                    red:"red",
                    green:"green"
                }
            }
            );
        </script>
    </body>
</html>

v-bind简写方式

<!-- 完整语法 --> <a v-bind:href="url">...</a> <!-- 缩写 --> <a :href="url">...</a>

2.4 v-model

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>v-model</title>
        <script src="js/vuejs-2.5.16.js"></script>
   </head>
    <body>
        <div id="app">
            姓名:<input type="text" id="username" v-model="user.username"><br>
            密码:<input type="password" id="password" v-model="user.password"><br>
            <input type="button" @click="fun9" value="获取">
        <script>
            new Vue({
                el:"#app",
                data:{
                    user:{
                        username:"kris",
                        password:"kris"
                        }
                },
                methods:{
                    fun9:function(){
                        alert("{username:"+this.user.username+",password:"+this.user.password+"}")
                    }
                }
            }
            );
        </script>
    </body>
</html>

2.5 v-for

操作数组或者对象

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>v-for</title>
        <script src="js/vuejs-2.5.16.js"></script>
   </head>
    <body>
        <div id="app">
            <ul>
                <li v-for="(item,index) in list">{{index}},{{item}}</li>
            </ul>
            <ul>
                <li v-for="(key,value) in user1">{{key}}====={{value}}</li>
            </ul>
        </div>
        <script>
            new Vue({
                el:"#app",
                data:{
                    user1:{
                        id:"1",
                        username:"kris",
                        password:"kris",
                        addr:"滨江"
                        },
                    list:[1,2,3,4,5,'a','b']        
                }
            }
            );
        </script>
    </body>
</html>

操作对象数组

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>v-for示例1</title>
        <script src="js/vuejs-2.5.16.js"></script>
    </head>
    <body>
        <div id="app">
            <table border="1">
                <tr>
                    <td>序号</td>
                    <td>名称</td>
                    <td>价格</td>
                </tr>
                <tr v-for="p in products">
                    <td> {{p.id}} </td>
                    <td> {{p.pname}} </td>
                    <td> {{p.price}} </td>
                </tr>
            </table>
        </div>
        <script>
            new Vue({
                        el: '#app', //表示当前vue对象接管了div区域                              
                        data:{                    
                            products:
                            [
                                {id:1,pname:"电视机",price:6000},
                                {id:2,pname:"电冰箱",price:8000},
                                {id:3,pname:"电风扇",price:600},
                                ]                
                            }        ,
                    });
        </script>
    </body>
</html>

2.6 v-if与v-show
v-if是根据表达式的值来决定是否渲染元素
v-show是根据表达式的值来切换元素的display css属性
 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>v-if/v-show</title>
        <script src="js/vuejs-2.5.16.js"></script>
   </head>
    <body>
        <div id="app">
            <span v-if="flag">kris</span>
            <span v-show="!flag">hello</span>
            <button @click="fun11()">切换</button>
        </div>
        <script>
            new Vue({
                el:"#app",
                data:{
                    flag:true    
                },
                methods:{
                    fun11:function(){
                        this.flag=!this.flag;
                    }
                }
            }
            );
        </script>
    </body>
</html>

 

posted @ 2020-04-09 12:03  *乐途*  阅读(153)  评论(0)    收藏  举报