v-if、v-else-if、v-else以及v-show

条件指令v-if、v-else-if、v-else

类似于JavaScript里的if、else-if、else,这三个指令根据表达式的值对DOM/组件进行渲染/销毁。

值得注意的是,v-else-if必须跟在v-if之后,v-else必须跟在v-else-if或者v-if之后。

如果想一次性判断多个元素,可以将他们包裹在template之内,使用条件指令操作外层的template,template并不会包含在最终的渲染结果中。

<div id="app">
<template v-if="state">
<p>文本A</p>
<p>文本B</p>
<p>文本C</p>
</template>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app', // app是Vue实例的挂在对象
data: {
state: true
}
})
</script>

Vue在渲染元素时,出于效率考虑,会尽可能的复用已有元素而非重新渲染。

<div id="app">
<input type="text" v-if="state" placeholder="电话">
<input type="text" v-else placeholder="邮箱">
<button @click="toggle">切换</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app', // app是Vue实例的挂在对象
data: {
state: false
},
methods: {
toggle () {
this.state = !this.state
}
}
})
</script>

点击“toggle”按钮,输入框内的placeholder改变,但当输入内容再进行切换后,内容依旧存在,说明被复用了,只是修改了placeholder。

要是不希望被复用,需要在指定的元素上添加key值,key值存在且唯一。

<div id="app">
<input type="text" v-if="state" placeholder="电话" key="phone">
<input type="text" v-else placeholder="邮箱" key="email">
<button @click="toggle">切换</button>
</div>

v-show

面试考点:v-show和v-if实现的视觉效果完全一致,但是还是有本质区别的,v-show改变CSS display的值,v-if彻底移除元素。

开发技巧:因为v-show是改变CSS属性,无论表达式真假与否,都会被编译。v-if直接操作DOM的移除/渲染,所以v-if更适合不经常变化的场景,v-show适合频繁变化的场景。

列表循环指令v-for

表达式需结合in使用,类似v-for="item in items"

数组

<div id="app">
<ul>
<li v-for="(item, index) in items">{{index}}-{{item}}</li>
</ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app', // app是Vue实例的挂在对象
data: {
items: [
'大盘鸡',
'周黑鸭',
'糖醋里脊',
]
}
})
</script>

用v-for将items中的数据循环渲染,item相当于items元素的别名,同时还支持index作为可选索引

对象

遍历对象属性时,有两个可选参数,分别为键名和索引

<div id="app">
<ul>
<li v-for="(value, key, index) in user">{{index}}-{{key}}:{{value}}</li>
</ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
var app = new Vue({
el: '#app', // app是Vue实例的挂在对象
data: {
user: {
name: '一枚蛋Oops',
age: 3,
hobby: '漂亮妹子'
}
}
})
</script>

整数

<span v-for="n in 5">{{ n }}</span>

输出:12345

v-text和v-html

v-text

面试考点:v-text和{{}}功能一样,展示文本,但是v-text比{{}}好的地方是,当网速很慢或者javascript出错时,会暴露我们的{{xxx}},而v-text不会显示出来。

<span v-text="message"></span>

v-html

面试考点:v-html和v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。

<span v-html="message"></span>
message: '<strong>Hello</strong> world',

Hello world

以上是本期全部内容,欲知后事如何,请听下回分解<( ̄︶ ̄)↗[GO!]

Vue基础之内部指令(上)的更多相关文章

  1. Vue基础之内部指令(下)

    v-on绑定事件监听器 直接撸代码: <div id="app"> <h2>计数器</h2> number:{{number}} <but ...

  2. Vue基础知识之指令和生命周期(一)

    优点:轻量易学,灵活. 核心:通过尽可能简单的API来实现响应的数据绑定和组合的视图组件. 1.数据绑定:数据改变,驱动视图的自动更新. 2.视图组件化:把整个网页拆分成一个个区块,每个区块都可以看成 ...

  3. Vue基础语法与指令

    项目初始化 用vscode打开终端,输入npm init -y生成package.json 然后安装vue npm install vue 需要注意的是,我遇到了这个问题 出现原因:文件夹名和生成的p ...

  4. Vue基础(环境配置、内部指令、全局API、选项、内置组件)

    1.环境配置 安装VsCode 安装包管理工具:直接下载 NodeJS 进行安装即可,NodeJS自带 Npm 包管理工具,下载地址:https://nodejs.org/en/download/安装 ...

  5. Vue 2.0入门基础知识之内部指令

    1.Vue.js介绍 当前前端三大主流框架:Angular.React.Vue.React前段时间由于许可证风波,使得Vue的热度蹭蹭地上升.另外,Vue友好的API文档更是一大特色.Vue.js是一 ...

  6. Vue基础系列(四)——Vue中的指令(上)

    写在前面的话: 文章是个人学习过程中的总结,为方便以后回头在学习. 文章中会参考官方文档和其他的一些文章,示例均为亲自编写和实践,若有写的不对的地方欢迎大家和我一起交流. VUE基础系列目录 < ...

  7. vue 基础-->进阶 教程(2): 指令、组件

    第二章 建议学习时间4小时  课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...

  8. vue 基础-->进阶 教程(2): 指令、自定义指令、组件

    第二章 建议学习时间4小时  课程共3章 前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零 ...

  9. (day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序

    目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model ...

随机推荐

  1. lr添加md5方法,字符编码转换,urlcode编码化

    1.使得写lr脚本时可调用md5方法,需要进行以下操作: 1)将md5.h文件加载到Extra Files下: 2)在globals.h文件中添加  #include“md5.h” 3).打开md5文 ...

  2. 【java线程】锁机制

    转载于:https://blog.csdn.net/vking_wang/article/details/9952063 http://www.infoq.com/cn/articles/java-m ...

  3. git切换用户踩坑

    1)配置用户信息 git config --global user.name "username" git config --global user.email "**@ ...

  4. JS 删除数组中某个元素

    //删除红色的元素 splice(下标,长度) var arr = ['a','b','c','d']; arr.splice(1,1); console.log(arr);  //['a','c', ...

  5. Winsock API编程介绍

    相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...

  6. 给django视图类添加装饰器

    要将login_required装饰到view class的dispatch方法上, 因为dispatch方法为类方法,不是单个的函数,所以需要将装饰函数的装饰器 login_required转化为装 ...

  7. js --"说声爱你不容易"

    <div class="tit"><label>yourName:</label><input type="text" ...

  8. js 使用Math函数取得数组最大最少值

    var arr = [3,1,2,6,7,8];

  9. Android 偏门xml属性

    在 recycleView listview scroview 等等 活动的时候会出现蓝边 android:overScrollMode="never" 用次属性可以去掉 fadi ...

  10. spring-boot整合mybatis(web mysql logback配置)

    pom.xml相关的配置说明. 配置文件看着比价多,在创建spring-boot项目的时候,自需要添加web,mysql,mybatis三个选项即可 <?xml version="1. ...