- 常用指令:
vue常用指令有:v-once指令、v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model指令等等。
-
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>
-
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>
-
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>
-
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>
-
v-text和v-html
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>
效果:
-
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>
效果:
-
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>
效果如下 :
-
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>
文章参考资料:【vue常用指令有哪些】(https://www.php.cn/vuejs/464673.html)