1. 程式人生 > >Vue.js常用指令介紹跟舉例應用

Vue.js常用指令介紹跟舉例應用

什麼是vue.js指令?
指令是帶有v-字首的特殊屬性。
vue.js指令的用途?
在表示式的值改變時,將某些行為應用到DOM上。
官方文件:https://cn.vuejs.org/v2/api/#指令

指令介紹
v-show:控制一個元素的display屬性顯示或者隱藏
v-on:為html元素繫結事件監聽
v-model:將使用者的輸入同步到檢視上,用在checkbox上時true為選擇,false為取消選擇,必須繫結到表單上
v-for:遍歷data中資料,並在頁面進行資料顯示
v-bind:繫結HTML元素的屬性
v-text: 更新元素的textContent
v-if:根據表示式結果控制一個元素顯示或者移除
v-else:為 v-if 或者 v-else-if 新增“else 塊”
v-cloak:保持在元素上直到關聯例項結束編譯。防止介面出現{{}}等問題
v-pre:不編譯這個元素和它的子元素,加快整體編譯速度
v-once:只編譯一次
v-html: 只顯示v-html繫結的元素

舉例應用
v-show
語法: v-show = ‘表示式’

  1. 根據表示式結果的真假,確定是否顯示當前元素
  2. true表示顯示該元素;false表示隱藏該元素;
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="div" v-show='false' style="width: 100px;height: 100px;background-color: gold;"></div>
		<div id="div2" v-show='true' style="width: 100px;height: 100px;background-color: red;"></div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:div
	});
	var vm2 = new Vue({
		el:div2
	});
</script>

v-on
語法: v-on:事件名稱= ‘’函式名稱()’
簡寫: @事件名稱= ‘’函式名稱()’
注: 函式定義在methods配置專案中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="div">
			<div  v-show='bol' style="width: 100px;height: 100px;background-color: gold;"></div>		
				<button v-on:click='fn()'>v-on</button>
				<button @click='fn()'>v-on</button>
			<h1>{{ bol }}</h1>
		</div>		
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:div,
		data:{
			bol:'true'
		},
		methods:{
			fn: function (){
				this.bol = !this.bol
			}
		}
	});		
</script>

v-model
語法:v-model = ‘變數’
注:v-model指令必須繫結在表單元素上

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="div">
			<input type="text" v-model='msg'/>
			<h1>{{ msg }}</h1>
			<input type="checkbox" v-model='bol1'/>{{ bol1 }}
			<input type="checkbox" v-model='bol2'/>{{ bol2 }}	
		</div>		
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:div,
		data:{
			msg:'leition',
			bol1:true,
			bol2:false
		}
	});		
</script>

v-for
語法: v-for =’ (值,鍵) in 陣列’

  1. 值表示每次遍歷得到的元素
  2. 鍵表示值的索引,可選引數
  3. 無需鍵的時候語法為 v-for =‘值 in 陣列’
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="div">
			<ul>
				<li v-for='(v,k) in arr'>{{ k +'---'}}{{ v }}</li>
				<li v-for='v, in arr'>{{ v }}</li>
			</ul>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el: '#div',
		data: {
			arr: ['a','b','c']
		}
	})
</script>

v-bind
語法: v-bind:屬性名 = ‘表示式’

  1. 繫結一個屬性:<img v-bind:src=‘myUrl’ /》
  2. 繫結多個屬性:<img v-bind:src=’{src:myUrl,title:msg}’ /》
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<style type="text/css">
			.bgcolor{
				background-color: red;
			}
			.textcolor{
				color: orange;
			}
		</style>
	</head>
	<body>
		<div id="div">
		<!--單個樣式,為真則使用red樣式,為假則不使用--> 
			<button v-bind:class = '{bgcolor: true}'>button</button>
			<button v-bind:class = '{bgcolor: flase}'>button</button>
		<!--多個樣式,為真則使用red樣式,為假則不使用--> 
			<button v-bind:class = '{bgcolor: true,textcolor:true}'>button</button>
			<button v-bind:class = '{bgcolor: flase,textcolor:true}'>button</button>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el: '#div',		
	})
</script>

v-text
語法:v-text = ‘變數’

<html>
	<head>
		<title></title>
		<meta charset="UTF-8"/>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="div">
			<p v-text='msg'></p>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div',
		data:{
			msg:'今天天氣不錯喲'
		}
	})
</script>

v-if
語法 v-if = ‘表示式’

  1. 表示式結果為true,表示顯示這個元素
  2. 表示式結果為false,表示移除這個元素
<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
	</head>
	<body>
		<div id="div">
			<p v-if = true>今天天氣不錯</p>
			<p v-if = false>今天天氣不錯</p>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div'
	})
</script>

v-else和v-else-if
語法 v-else = ‘表示式’

  1. 前一兄弟元素必須有 v-if 或 v-else-if
  2. 為 v-if 或者 v-else-if 新增“else 塊”/“else if塊”
<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
	</head>
	<body>
		<div id="div">
			<p v-if = false>今天天氣不錯</p>
			<p v-else = true>今天有暴雨</p>
		</div>
		<div id="div2">
			<p v-if = false>今天天氣不錯</p>
			<p v-else-if = true>今天有雪</p>
			<p v-else = true>今天有暴雨</p>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div'
	})
	var vm2 = new Vue({
		el:'#div2'
	})
</script>

v-cloak
不需要表示式,直接新增在容器上。

<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
		<style type="text/css">
			[v-cloak]{
				display: none;
			}
		</style>
	</head>
	<body>
		<div id="div" v-cloak>
		</div>
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div'
	})
</script>

v-pre
不需要表示式,跳過這個元素和它的子元素的編譯過程。可以用來顯示原始 Mustache 標籤。跳過大量沒有指令的節點會加快編譯。

<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
	</head>
	<body>
		<div id="div">
			<p v-pre>{{ msg }}</p>
			<p>{{ msg }}</p>
		</div>		
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div',
		data:{
			msg:'今天天氣不錯喲'
		}
	})
</script>

v-once
不需要表示式,只渲染元素和元件一次。隨後的重新渲染,元素/元件及其所有的子節點將被視為靜態內容並跳過。這可以用於優化更新效能。

<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
	</head>
	<body>
		<div id="div">
			<p v-once>{{ msg }}</p>
			<p>{{ msg }}</p>
			<input type="text" v-model="msg">
		</div>		
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div',
		data:{
			msg:'今天天氣不錯喲'
		}
	})
</script>

v-html
語法:v-html = ‘元素’
更新元素的 innerHTML 。注意:內容按普通 HTML 插入 - 不會作為 Vue 模板進行編譯 。如果試圖使用 v-html 組合模板,可以重新考慮是否通過使用元件來替代。

<html>
	<head>
		<title></title>
		<script src="vue.js" type="text/javascript" charset="utf-8"></script>
		<meta charset="UTF-8"/>
	</head>
	<body>
		<div id="div">
			<p v-html="msg">{{ msg }}msg</p>
			<p>{{ msg }}msg</p>
			<input type="text" v-model="msg">
		</div>		
	</body>
</html>
<script type="text/javascript">
	var vm = new Vue({
		el:'#div',
		data:{
			msg:'今天天氣不錯喲'
		}
	})
</script>

指令練習地址:https://blog.csdn.net/qq_39383675/article/category/8256374