Vue系列之常用指令

v-if v-else v-for v-on v-bind


由于公司只用JQ,再這樣下去,本寶寶就要被淘汰啦,所以閑暇時間,學(xué)習(xí)下當(dāng)前熱門框架Vue,這也是我準(zhǔn)備今年必須啃下的硬骨頭。在此記錄學(xué)習(xí)過程中的點點滴滴,一方面方便其他有志于學(xué)習(xí)Vue的同學(xué),另一方面,也有助于我后期回顧知識。以下文字純屬手碼,如有雷同,純屬巧合。歡迎志同道合者提出文中錯誤和問題!

1.vue常用指令

v-if v-else

v-if、v-else 條件渲染指令,根據(jù)其后表達式的boolean值進行判斷是否渲染該元素

例子:

<div id="app">
    <h2 v-if="flag">show-boy</h2>
        <!-- v-else和v-if一起用-->
    <h2 v-else>show-girl</h2>
    <button v-on:click="changeFlag"></button>
</div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            changeFlag:function(){
                this.flag = !this.flag;
            }
        }
    })
<script>

v-if和v-else一般結(jié)合起來用,當(dāng)v-if后面的變量的布爾值為真的時候,顯示該內(nèi)容"show-boy",v-else里面的內(nèi)容不顯示。反之,則顯示v-else里面的內(nèi)容"show-girl",不顯示v-if里面的內(nèi)容


v-show

v-show決定是否顯示內(nèi)容

例子:

<div id="app">
    <h2 v-show="flag">show-me</h2>
    <button v-on:click="changeFlag"></button>
</div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            changeFlag:function(){
                this.flag = !this.flag;
            }
        }
    })
<script>

v-show決定該區(qū)域是否顯示出來,當(dāng)后面布爾值為真的時候,顯示"show-me",反之不顯示


v-for

v-for是vue指令當(dāng)中用的最頻繁的,它的作用就相當(dāng)于我們在JS代碼中循環(huán)遍歷從后臺獲取的數(shù)據(jù),最后再將數(shù)據(jù)渲染到頁面上

例子:

<div id="app">
    <ul>
        <li v-for="item in Arr">//item為每次循環(huán)的對象
            <div>item.name</div>
            <div>item.age</div>
        </li>
    </ul>                
</div>                  
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            Arr:[
                    {
                        name:"tom",
                        age:15
                    },
                    {
                        name:"jack",
                        age:20
                    }
            ]
        }
    })
<script>
//結(jié)果
    tom
    15
    jack
    20

v-for一般用來將從后臺獲取的數(shù)據(jù),循環(huán)遍歷渲染在頁面上,使用v-for不僅可以循環(huán)遍歷數(shù)組元素,還可以遍歷數(shù)組元素的下標(biāo)

例子:

<div id="app">
    <ul>
        <li v-for="(item,i) in Arr">//item為每次循環(huán)的對象,i為元素下標(biāo)
            <div>第{{i}}個人的名字為:{{item.name}}</div>
        </li>
    </ul>                
</div>                  
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            Arr:[
                    {
                        name:"tom",
                        age:15
                    },
                    {
                        name:"jack",
                        age:20
                    }
            ]
        }
    })
<script>
//結(jié)果:
    第0個人的名字為:tom
    第1個人的名字為:jack

v-for不僅可以用來遍歷數(shù)組,還可以用來遍歷對象的key和value

例子:

<div id="app">
    <ul>
        <li v-for="(value,key) in Mine">//key為屬性名稱,value為對應(yīng)屬性值,注意value在前,key在后
            <span>{{key}}</span>:
            <span>{{value}}</span>
        </li>
    </ul>                
</div>                  
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            Mine:{
                    name:"rui.wei",
                    age:25,
                    gender:"man"
                }
        }
    })
<script>
//結(jié)果:
    name: rui.wei
    age: 25
    gender: man


v-on

v-on用來給元素綁定事件,事件函數(shù)定義在實例vm的methods屬性里

例子:

<div id="app">
    <button v-on:click="myTry"></button>//可以簡寫為@click="myTry"
</div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            myTry:function(){
                console.log("Welcome to Vue")
            }
        }
    })
<script>

不管什么事件,如click、mouseover、keyup...都用該指令綁定到對應(yīng)元素上,如果想要對該元素做一些行為或者樣式改變的話,那么在methods中定義事件的時候,要將事件對象傳入進去,如下:

例子:

<div id="app">
    <button v-on:click="myTry"></button>//可以簡寫為@click="myTry"
</div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            myTry:function(event){
                event.target.style.background = "red";
            }
        }
    })
<script>

Vue的強大之處,還在于很人性化,比如給事件加上了一些事件修飾符按鍵修飾符(即指定什么鍵觸發(fā)該事件)**

(官方解釋)在事件處理程序中調(diào)用 event.preventDefault() 或 event.stopPropagation() 是非常常見的需求。盡管我們可以在 methods 中輕松實現(xiàn)這點,但更好的方式是:methods 只有純粹的數(shù)據(jù)邏輯,而不是去處理 DOM 事件細(xì)節(jié)。

例子(事件修飾符):

<div id="app">
    <button v-on:click.stop="myTry"></button>//可以簡寫為@click="myTry"                                    
</div>                   
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            myTry:function(event){
                event.target.style.background = "red";
            }
        }
    })
<script>
//.stop:取消事件冒泡
//.prevent:提交事件不在重載頁面
//.self:只在該元素上觸發(fā)事件,而不在其子元素上觸發(fā)事件
//.once:點擊事件將只會觸發(fā)一次
//事件修飾符還可以是串聯(lián)的,如<form v-on:submit.prevent></form>
......

例子(按鍵修飾符):

<div id="app">
    <div v-on:keyup.enter="myTry"></div>                        
</div>                   
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true
        },
        methods:{
            myTry:function(event){
                console.log("You have get it by press Enter!")
            }
        }
    })
<script>
//在監(jiān)聽鍵盤事件時,我們經(jīng)常需要監(jiān)測常見的鍵值。 Vue 允許為 v-on 在監(jiān)聽鍵盤事件時添加按鍵修飾符,有:.enter/.tab/.delete (捕獲 “刪除” 和 “退格” 鍵)/.esc/.space/.up/.down/.left/.right

v-bind

v-bind用來給元素綁定屬性

1.v-bind:class用來給元素動態(tài)添加class值

例子:

<style>
    .myClass{
        background:"pink";
        color:"gray";
    }
</style>
<body>
    <div id="app">//v-bind:class可以縮寫為:class
        <h2 v-bind:class={myClass:flag}">Hello world!</h2>
        <button @click="changeFlag">Give me a change!</button>
    </div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:false
        },
        methods:{
            changeFlag:function(){
                this.flag = !this.flag;
            }
        }
    })
<script>
</body>

//當(dāng)我們點擊按鈕的時候,動態(tài)的改變定義在data中的flag值。當(dāng)flag值為true的時候,h2標(biāo)簽將會加上名為myClass的class。但是一般會將flag同時對應(yīng)兩個class,從而在兩個class之間來回切換樣式。如下:

<style>
    .myClass{
        background:"pink";
        color:"gray";
    }
    .myClass_1{
        background:"red";
        color:"blue";
    }
</style>
<body>
    <div id="app">
        <h2 :class={myClass:flag,myClass_1:!flag}">Hello world!</h2>
        <button @click="changeFlag">Give me a change!</button>
    </div>
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:false
        },
        methods:{
            changeFlag:function(){
                this.flag = !this.flag;//methods中的this==vm
            }
        }
    })
<script>
</body>

2.v-bind:style

v-bind:style用來給元素綁定樣式

例子:

<div id="app">
   <div :style="myStyle">Welcome to my world!</div>                                 
</div>                   
<script>
    var vm = new Vue({
        el:"#app",
        data:{
            flag:true,
            myStyle:{
                "color":"red",
                "font-size":"16px"
            }
        }
    })
<script>
//div將會加上color="red",font-size:16px樣式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容