Vue学习之指令学习

v-text

v-text的功能和插值表达式相同,用于将纯文本渲染到页面上。由于v-text渲染数据在重复刷新的时候会出现闪动,可以使用v-cloak指令,先隐藏。替换完值后再渲染到页面上。

<div id="app">
	<p v-text="tip"></p>
	<p>{{tip}}</p>
</div>
<script type="text/javascript">
	var vm=new Vue({
		el:"#app",
		data:{
			tip:"Hello World!"
		}
	});
</script>

输出结果
在这里插入图片描述

v-html

v-html指令的内容只会被当做普通html语言插入,不会被当做vue模板编译。但是直接在网页上渲染存在风险。

<div id="app">
	<span v-html="tip"></span>
</div>
<script type="text/javascript">
	var vm=new Vue({
		el:"#app",
		data:{
			tip:"你好"
		}
	});
</script>

输出结果
在这里插入图片描述

v-pre

v-pre指令会直接显示原始信息,跳过编译的过程。

<div id="app">
	<span v-pre>{{tip}}</span>
</div>
<script type="text/javascript">
	var vm=new Vue({
		el:"#app",
		data:{
			tip:"你好"
		}
	});
</script>

输出结果
在这里插入图片描述

v-once

添加v-once指令后元素和组件只会渲染一次,之后不具备响应式功能,不会再重新渲染。可以用于不需要修改的元素,从而优化性能。

<div id="app">
	<span v-once>{{tip}}</span>
</div>

v-show

根据v-show的布尔值来改变css属性的display的值,true:显示,false:隐藏。

<div id="app">
	<span v-show="false">你好</span>
	<span v-show="true">你好</span>
</div>

输出结果
在这里插入图片描述

v-if

v-if指令用于条件渲染,只有当条件为真才会渲染元素,相当于if语句。v-for指令的优先级高于v-if。

<div id="app">
	<span v-if="1>0">1>0</span>
</div>

输出结果
在这里插入图片描述

v-else-if

v-else-if指令使用前必须有v-if或者v-else-if,相当于else if语句。

<div id="app">
	<span v-if="number<0">number小于0</span>
	<span v-else-if="number>0">number大于0</span>
</div>
<script type="text/javascript">
	var vm=new Vue({
		el:"#app",
		data:{
			number:5
		}
	});
</script>

输出结果
在这里插入图片描述

v-else

v-else-if指令使用前必须有v-if或者v-else-if,相当于else语句。

<div id="app">
	<span v-if="number<0">number小于0</span>
	<span v-else-if="number>0">number大于0</span>
	<span v-else>number等于0</span>
</div>
<script type="text/javascript">
	var vm=new Vue({
		el:"#app",
		data:{
			number:0
		}
	});
</script>

输出结果
在这里插入图片描述

v-for

v-for指令用于循环渲染元素。相当于for循环语句。可以给改指令绑定一个唯一的key值,从而提高性能。

<div id="app">
	<table>
		<tbody>
			<tr :key="items.id" v-for="items in books">
				<td>{{items.id}}</td>
			</tr>
		</tbody>
	</table>
</div>

v-on

v-on指令用于元素事件的绑定,可以用@来表示缩写。

<div id="app">
	<button @click="count++">点击了{{count}}</button>
</div>

输出结果
在这里插入图片描述

v-bind

v-bind指令用于动态绑定属性,可以用:表示缩写。

<div id="app">
	编号
	<input type="text" :disabled="true">
</div>

输出结果
在这里插入图片描述

v-model

v-model指令用于实现数据的双向绑定,下面的v-model的实现原理是将input框:value=“number”,动态绑定value值,然后通过:input绑定监听函数,通过函数参数拿到event对象,通过event.target.value得到输入框改变的值,再将改变后的值赋给this.number,最后重新渲染网页中input的value值。

<div id="app">
	<input type="text" v-model="number">
	<span >{{number}}</span>
</div>

输出结果
在这里插入图片描述

v-slot

v-slot是可以接受prop参数的插槽或者具名插槽。
作用域插槽

<div id="app">
        <parent>
            <template  v-slot='number'>
                {{number.user}}
            </template>
        </parent>
        <parent></parent>
</div>
<script type="text/javascript">
    Vue.component("parent",{
        data:function(){
            return {
                number:8
            } 
        },
        template:`
            <span>
              <slot :user="number">备用内容</slot>
            </span>
        `
    });
    var vm=new Vue({
        el:"#app"
    })
</script>

输出结果
在这里插入图片描述

v-cloak

v-cloak可以在关联元素编译结束前给元素的display
设置成none,可以解决v-text的闪动问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值