詳解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
Vue.js的指令是以v-開頭的,它們作用于HTML元素,指令提供了一些特殊的特性,將指令綁定在元素上時,指令會為綁定的目標元素添加一些特殊的行為,我們可以將指令看作特殊的HTML特性(attribute)。
Vue.js提供了一些常用的內置指令,如下:
v-if指令
v-for指令
v-show指令
v-else指令
v-bind指令
v-on指令
1:v-if指令
v-if指令是條件渲染指令,它根據(jù)表達式的真假來刪除和插入元素,它的基本語法如下:
v-if="expression"
expression是一個返回布爾值的表達式,表達式可以是一個布爾值屬性,也可以是一個返回布爾值的運算式。
Eg:
<div id="app"> <h1>Hello, Vue.js!</h1> <h1 v-if="yes">Yes!</h1> <h1 v-if="no">No!</h1> <h1 v-if="age >= 18">Age: {{ age }}</h1> <h1 v-if="name.indexOf('li') >= 0">Name: {{ name }}</h1> </div> var app= new Vue({ el: '#app', data: { yes: true, no: false, age: 20, name: 'lililili' } })
//數(shù)據(jù)的yes屬性為true,所以"Yes!"會被輸出;
//數(shù)據(jù)的no屬性為false,所以"No!"不會被輸出;
//運算式age >= 18返回true,所以"Age: 28"會被輸出;
//運算式name.indexOf('li') >= 0返回false,所以"Name: lililili"會被輸出。
V-if只能控制一個元素上的是否顯隱,對于多個元素控制我們可以使用一個template元素實現(xiàn)
在vue中我們想使用條件模板直接在dom元素上使用v-if指令,v-if指令的值表示vue實例對象上的數(shù)據(jù)值
Tempalte是vue提供的一個自定義元素,寫在這個里面的 元素會根據(jù)template v-if屬性來控制顯隱,在渲染以后這個元素會被vue刪除掉,(v-if指令元素保留)
<div id="app"> <template v-if="type"> <span>{{type}}</span> <span> | </span> </template> <strong>{{title}}</strong> </div> <script type="text/javascript" src="vue.js"></script> <script type="text/javascript"> // 數(shù)據(jù) var data = { title: '哈哈哈', type: '科技' } var app = new Vue({ el: '#app', data: data })
2:v-for指令
v-for指令基于一個數(shù)組渲染一個列表,它和JavaScript的遍歷語法相似:
v-for="item in items"
items是一個數(shù)組,item是當前被遍歷的數(shù)組元素。
Eg:
<ul id="app"> <li v-for="item in list">{{item}}</li> </ul> /var data = [ '快樂大本營', '奔跑吧兄弟', '極限挑戰(zhàn)' ] var app = new Vue({ el: '#app', data: { list: data } })
與v-if一樣v-for也可以應用在template元素上,此時可以實現(xiàn)對多組元素的for循環(huán)
Eg:
<ul id="app"> <template v-for="item in list"> <li> <span v-if="item.type">{{item.type}} | </span> <strong>{{item.title}}</strong> </li> <br> </template> </ul> var data = [ { type: '湖南', title: '快樂大本營' }, { type: '浙江', title: '奔跑吧兄弟' }, { type: '東方', title: '極限挑戰(zhàn)' } ] var app = new Vue({ el: '#app', data: { list: data } })
3:v-show指令
v-show也是條件渲染指令,控制元素顯隱,和v-if指令不同的是,使用v-show指令的元素始終會被渲染到HTML,它只是簡單地為元素設置CSS的style屬性。
V-if是false會將元素在dom文檔中刪除
V-show是false是將元素的display設置none
V-if會刪除元素,v-show只是做樣式顯隱,會保留頁面中
4:v-else指令
可以用v-else指令為v-if或v-show添加一個“else塊”。v-else元素必須立即跟在v-if或v-show元素的后面——否則它不能被識別。
v-else元素是否渲染在HTML中,取決于前面使用的是v-if還是v-show指令。
v-if為true,后面的v-else不會渲染到HTML;v-show為tue,但是后面的v-else渲染到HTML。
5:v-bind指令
v-bind指令可以在其名稱后面帶一個參數(shù),中間放一個冒號隔開,這個參數(shù)通常是HTML元素的特性(attribute),例如:v-bind:class=”''
v-bind:argument="expression"
6:v-on指令
v-on指令用于給監(jiān)聽DOM事件,它的用語法和v-bind是類似的,例如監(jiān)聽<a>元素的點擊事件:
<a v-on:click="doSomething">
語法:V-on:click=“事件回調函數(shù)的名稱”
定義事件的回調函數(shù),在vue的實例化對象的methods屬性中定義
Methods他的值是一個對象
對象是屬性名稱表示事件的回調函數(shù)名稱
對象的屬性值是一個函數(shù),就是事件的回調函數(shù)
他的this指向的是vue實例化對象,因此通過它我們可以獲取或者設置vue實例化對象上屬性
它默認有個參數(shù)是事件對象,這個事件對象可以訪問該事件的相關信息$event傳遞參數(shù)可以訪問到事件對象
當我們在使用事件時候,可以傳遞一些參數(shù),此時在vue的事件回調函數(shù)中它的參數(shù)與事件使用時候傳入的參數(shù)是一致的
<input type="text" v-model="msg"> <button v-on:click="showTitle(msg, $event, 'hello')">btn</button> <button v-on:click="showTitle">btn2</button> <h1>{{title}}</h1> var app = new Vue({ el: '#app', data: { title: '', msg: '' }, methods: { // 屬性名稱表示回調函數(shù)的名稱 showTitle: function () { // console.log(this) // console.log(arguments) 傳的參數(shù)都能訪問到 msg, $event, 'hello' // 通過this訪問vue實例化對象上的其他屬性和方法。Data.title data.aa this.title = '快樂大本營'; }, aa: function () { } } })
總結
以上所述是小編給大家介紹的Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
vue+Ant?Design進度條滑塊與input聯(lián)動效果實現(xiàn)
最近接到這樣一個需求滑塊進度與輸入框為一致,默認值為80,最小不能小于30,最大為100,怎么實現(xiàn)這個聯(lián)動效果呢,下面小編給大家分享下基于vue+Ant?Design進度條滑塊與input聯(lián)動效果的實現(xiàn),感興趣的朋友跟隨小編一起看看吧2022-12-12Webpack+Vue如何導入Jquery和Jquery的第三方插件
本文主要介紹了Webpack+Vue導入Jquery和Jquery的第三方插件的方法,具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02element的el-date-picker組件實現(xiàn)只顯示年月日時分效果(不顯示秒)
最近遇到這樣的需求使用element的el-date-picker組件,只顯示時分,不顯示秒,下面小編給大家分享element的el-date-picker組件實現(xiàn)只顯示年月日時分效果,感興趣的朋友一起看看吧2024-08-08Vue使用Proxy監(jiān)聽所有接口狀態(tài)的方法實現(xiàn)
這篇文章主要介紹了Vue使用Proxy監(jiān)聽所有接口狀態(tài)的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-06-06