【前端面试】面试官:说说Vue中常见的指令

大家好,这里是前端营地,分享最新的前端知识和面试经验,欢迎评论区留言和投稿!

Vue指令是带有v-前缀的特殊属性,通过属性来操作元素

Vue常见指令:

v-show指令、v-if指令、v-else指令、v-else-if指令、v-for指令、v-html指令、v-text指令、v-bind指令、v-on指令、v-model指令等等

1.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>

2.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>

3.v-for指令

v-for可用来遍历数组、对象、字符串。

用法:v-for=“(循环变量,索引值)in 目标数据” :key=“id”

<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>

4.v-html,v-text 指令

内容渲染指令:

v-text 会覆盖标签内部原有的内容

{{}}差值表达式 可以解决v-text覆盖问题 在实际开发中使用最多。

v-html 可以把带有标签的字符串渲染成真正的html内容 

v-text和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>

5.v-bind指令

如果给属性赋值,那么可以使用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>

6.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>

7.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>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢豪杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值