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 = ‘表示式’
- 根據表示式結果的真假,確定是否顯示當前元素
- 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 陣列’
- 值表示每次遍歷得到的元素
- 鍵表示值的索引,可選引數
- 無需鍵的時候語法為 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:屬性名 = ‘表示式’
- 繫結一個屬性:<img v-bind:src=‘myUrl’ /》
- 繫結多個屬性:<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 = ‘表示式’
- 表示式結果為true,表示顯示這個元素
- 表示式結果為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 = ‘表示式’
- 前一兄弟元素必須有 v-if 或 v-else-if
- 為 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