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. caioj.cn 3004:中山市第九届小学生信息学邀请赛试题 5.合并线段

    CSDN的博客 友键 [题目描述] 有一条很长的尺子,上面标记着整数点的坐标.如: 现在给出n条线段,每条线段表示为x-y(x和y为整数,x<=y),两条线段能合并的条件是x-y,y-z,合并为 ...

  2. 坦克大战学习笔记-TankWar

    最近学习了马士兵老师直播的单机版坦克大战,模仿的做了一个,整理一下思路记录下来,项目git地址:https://github.com/zhuchangli/TankWar/tree/master 视频 ...

  3. java编写ID3决策树

    说明:每个样本都会装入Data样本对象,决策树生成算法接收的是一个Array<Data>样本列表,所以构建测试数据时也要符合格式,最后生成的决策树是树的根节点,通过里面提供的showTre ...

  4. windows+nginx负载测试

    系统:windows2003nginx版本:1.7.3(官方推荐版本 #父节点 http upstream cluster_1{ ip_hash;#能较好地把同一个客户端的多次请求分配到同一台服务器处 ...

  5. nginx常用模块

    Nginx模块介绍 核心模块:core module 标准模块:stand modules HTTP modules: Standard HTTP modules Optional HTTP modu ...

  6. java -jar启动java项目时,引用不同配置文件命令

    java -jar eureka-server.jar --spring.profiles.active=peer1

  7. 显式拥塞通告(ECN)及其在Linux上的实现

    1 ECN简介 首先看看ECN握手报文的特点,根据RFC3168,ECN握手报文IP头部不能够设置ECT和CE位的 SYN报文TCP标志字段的CWR和ECE位被置1 SYN-ACK报文的CWR位被置0 ...

  8. js获取元素属性值为空的原因和解决办法

    问题描述:js获取某元素的属性值为空 代码: <!-- css定义在head中 --> <style> #box{ width: 100px; height: 100px; b ...

  9. selenium中切换浏览器不同tab 的操作

    from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get('http://ui.imdsx.cn/uit ...

  10. OpenGL之shader着色器的应用,三色渐变的三角形

    学习自: https://learnopengl-cn.github.io/01%20Getting%20started/05%20Shaders/#_7 首先放一张效果图: 本次教程,将着色器单独定 ...