目录
-
常用指令
vue的常用指令有:v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model指令等等。
1.v-once指令
只会执行一次渲染,当数据发生改变时,不会再变化
<div id="app">
<p v-once>{{msg}}</p>
<input v-model="msg" type="text" />
</div>
<script>
let vue = new Vue({
el:"#app",
data:{
msg:'今天气温'
}
})
</script>
2.v-show指令
v-show接受一个表达式或一个布尔值。相当于给元素添加一个display属性
<div id="app">
<div v-show="conditional == 'ok' ">{{msg}}</div>
<input v-model="msg" type="text" />
</div>
<script>
let vue = new Vue({
el:"#app",
data:{
msg:'今天气温',
conditional:'ok'
}
})
</script>
3.v-if、v-else、v-else-if指令
v-if和v-show有同样的效果,不同在于v-if是重新渲染,而v-show使用display属性来控制显示隐藏。频繁切换的话使用v-show减少渲染带来的开销。
说明一下:v-if可以单独使用,而v-else-if,v-else必须与v-if组合使用
v-if、v-else-if都是接受一个条件或布尔值,v-else不需要参数。比较简单,看看案例:
<div id="app">
<div>
小明评级为:<span v-if="score >= 90">优秀</span>
<span v-else-if="score >= 80">良好</span>
<span v-else-if="score >= 60">及格</span>
<span v-else>不及格</span>
</div>
</div>
<script>
new Vue({
el:"#app",
data:{
msg:'message',
score:59,
},
})
</script>
4.v-for指令
v-for可用来遍历数组、对象、字符串。
<div id="app">
<!-- obj -->
<div v-for="(att,val) in obj">
{{att}}:{{val}}
</div>
<!-- arr -->
<div v-for="(val, index) in arr">
{{index}}:{{val}}
</div>
<!-- string -->
<div v-for="astr in str">
{{astr}}
</div>
</div>
<script>
new Vue({
el:"#app",
data:{
obj:{
name:'kk',
age:'18',
hobby:'pingpong'
},
arr:[
1,2,3,4,4,5,6,7
],
str:'str hello world'
},
})
</script>
5.v-html、v-text指令
v-text是渲染字符串,会覆盖原先的字符串
v-html是渲染为html。{{}}双大括号和v-text都是输出为文本。那如果想输出为html。使用v-html,如下例子
<div id="app">
<div>{{innerHtml}}</div>
<div v-text="innerHtml"></div>
<div v-html="innerHtml"></div>
</div>
<script>
new Vue({
el:"#app",
data:{
innerHtml:'<button>一个按钮</button>'
}
})
</script>
效果:
6.v-bind指令
是用可以将标签内的属性值解析成js代码,在标签的属性中使用v-bind,双引号里的内容会被当作js解析(只能解析变量或三元表达式),如下:
如果给属性值设置为一个变量,那么可以使用v-bind
可以缩写为:<属性>="<变量>"
<div id="app">
<!-- 完整写法 v-bind: -->
<div v-bind:class="className">"{{innerHtml}}"</div>
<!-- 缩写 : -->
<div :class="className">"{{innerHtml}}"</div>
<div v-text="innerHtml"></div>
<div v-html="innerHtml"></div>
</div>
<script>
new Vue({
el:"#app",
data:{
innerHtml:'<button>一个按钮</button>',
className:'box'
}
})
</script>
效果:
7.v-on指令
v-on用于事件绑定
语法:v-on:<事件类型>="<函数名>"
简写:@<事件类型>="<函数名>"
<body>
<div id="app">
<!-- 完整写法 v-on: -->
<div v-on:click="clickfunc">点击事件</div>
<!-- 缩写 @ -->
<div @click="clickfunc">点击事件</div>
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
},
methods:{
// 定义一个 点击函数
clickfunc:function(){
console.dir('click event')
}
},
})
</script>
效果如下 :
8.v-model指令
数据双向绑定指令,限制在 <input>、
<select>、
<textarea>、
components中使用
语法:v-model+"<变量名>"
<body>
<div id="app">
<div>val的值:{{val}}</div>
<div>val的值:{{val}}</div>
<input v-model="val">
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
val:'success'
}
})
</script>