Vue让你轻松实现盒子的显示隐藏和双向数据绑定!

news/2024/11/28 3:48:39/

Vue让你轻松实现盒子的显示隐藏和双向数据绑定!

  • 一、Vue让你轻松实现盒子的显示隐藏和双向数据绑定!
    • (一)v-if 和 v-show
      • 1. v-show
      • 2. v-if
      • 3. 应用场景:
      • 4. 案例:展开折叠盒子
    • (二)v-else 和 v-else-if
    • (三)v-model
      • 1. 基本使用
      • 2. v-model 处理其他表单元素
      • 3. v-model 修饰符
        • ①、.number:转数字,以parseFloat转成数字类型
        • ②、.trim:去除首尾空白字符
        • ③、.lazy:在change时触发而非inupt时
    • (四)v-text 和 v-html
      • 1. v-text指令
      • 2. v-html指令

一、Vue让你轻松实现盒子的显示隐藏和双向数据绑定!

(一)v-if 和 v-show

  • 基本使用:v-show 和 v-if 功能: 控制盒子的显示隐藏

1. v-show

  • 语法: v-show=“布尔值” (true显示, false隐藏)
  • 原理: 实质是在控制元素的 css 样式, display: none;
<template><div><h1>v-show</h1><p>v-show="变量" 变量:true 展示</p><div class="box" v-show="key"></div></div>
</template>
<script>
export default {data(){return{key:true}}
}
</script>
<style>
.box{width: 100px;height: 100px;background-color: brown;
}
</style>

在这里插入图片描述
在这里插入图片描述

2. v-if

  • 语法: v-if=“布尔值” (true显示, false隐藏)
  • 原理: 实质是在动态的创建 或者 删除元素节点
  • 在这里插入图片描述

3. 应用场景:

  • 如果是频繁的切换显示隐藏, 用 v-show
    (v-show, 只是控制css样式,而v-if, 频繁切换会大量的创建和删除元素, 消耗性能)
  • 如果是不用频繁切换, 要么显示, 要么隐藏的情况, 适合于用 v-if
    (v-if 是惰性的, 如果初始值为 false, 那么这些元素就直接不创建了, 节省一些初始渲染开销)
    v-show 和 v-if 功能: 控制盒子的显示隐藏

4. 案例:展开折叠盒子

<template><div><h1>v-show</h1><p>v-show="变量" 变量:true 展示 控制盒子显示隐藏</p><p>v-if="变量" 变量:true 展示  控制盒子创建删除</p><!-- 需求1:有个按钮控制下,点击按钮,隐藏!再次点击,又出现 --><!--  1.注册点击事件 --><!--  2.控制显示隐藏:盒子,被谁控制 key --><!--  3.点击后只要控制key,就控制了盒子的显示和隐藏 --><!--   key: true || false 取反--><!-- 需求2:当有盒子:显示折叠;当没有盒子:显示展开 --><!--  1.文字需要被盒子的状态控制 --><!--  2.盒子的状态:key --><!--    key?'折叠':'展开' --><button @click="key=!key">{{ key?'折叠':'展开' }}</button><div class="box" v-show="key"></div><div class="box" v-if="key"></div></div>
</template><script>
export default {data(){return{key:true}}
}
</script>
<style>
.box{width: 100px;height: 100px;background-color: brown;margin: 5px;
}
</style>

在这里插入图片描述

(二)v-else 和 v-else-if

  • 注意:指令可以配套!标签不用配套
<div id="app"><h1 v-if="isLogin">尊敬的超级vip, 你好</h1><h1 v-else>你谁呀, 赶紧登陆~</h1><hr><h1 v-if="age >= 60">60岁以上, 广场舞</h1><h1 v-else-if="age >= 30">30岁以上, 搓麻将</h1><h1 v-else-if="age >= 20">20岁以上, 蹦迪</h1><h1 v-else>20岁以下, 唱跳rap篮球</h1>
</div>

(三)v-model

1. 基本使用

  • 作用: 给表单元素使用, 双向数据绑定
    ①、数据变化了, 视图会跟着变
    ②、视图变化了, 数据要跟着变
  • 输入框内容变化了(监听用户的输入, 监听input事件), 数据要跟着变
  • 语法: v-model=‘值’
<template><div><input type="text" v-model="msg"><!-- v-bind: 单向数据绑定,数据层->视图层  --><!-- v-model: 双向数据绑定,数据层<->视图层  --></div>
</template>
<script>
export default {data(){return{msg:"我是初始化数据"}}
}
</script>

在这里插入图片描述

2. v-model 处理其他表单元素

  • v-model 会忽略掉表单元素原本的value, checked等初始值
    ①、textarea
    ②、select
    ③、checkbox
<template><div><input type="text" v-model="msg"><!-- v-model对于表单:直接使用,不关注value、checkbox --><input type="checkbox" v-model="key"><textarea v-model="msg"></textarea><br/><select v-model="num"><br/><option value="1">北京</option><option value="2">上海</option><option value="3">青岛</option></select></div>
</template><script>
export default {data(){return{msg:"我是初始化数据",key:true,num:"3"}}
}
</script>

在这里插入图片描述

3. v-model 修饰符

  • 语法: v-model.修饰符=“Vue数据变量”

①、.number:转数字,以parseFloat转成数字类型

  • 如果想自动将用户的输入值, 用parseFloat转成数字类型, ,可以给 v-model 添加 number 修饰符:
<input type="text" placeholder="输入年龄" v-model.number="age">
  • 如果这个值如果这个值无法转数字,则会返回原始的值。

②、.trim:去除首尾空白字符

  • 如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:
<input type="text" placeholder="输入姓名" v-model.number="name">

③、.lazy:在change时触发而非inupt时

  • change时而非input时更新,可以给 v-model 添加 lazy 修饰符:
<input type="text" placeholder="输入价格" v-model.number="name">

(四)v-text 和 v-html

1. v-text指令

  • 作用:更新元素的innerText/innerHTML
  • 解释:更新元素的 textContent/innerText。如果要更新部分的 textContent ,需要使用 {{ Mustache }} 插值。
<h1 v-text="msg"></h1>

2. v-html指令

  • 解释:更新DOM对象的 innerHTML,html标签会生效
<h1 v-html="msg"></h1>
  • 在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。
  • 只在可信内容上使用 v-html永不用在用户提交的内容上。
  • 语法:
    ⚫ v-text=“值”
    ⚫ v-html=“值”
  • 区别:
    ⚫ v-text 不解析标签,把值当成普通字符串显示。
    ⚫ v-html 解析标签,把值当成标签进行解析显示。
<template><div><h1>v-text 和 v-html</h1><p v-text="msg"></p><p v-html="msg"></p></div>
</template><script>
export default {data(){return{msg:"<button>btn</button>"}}
}
</script>

在这里插入图片描述


http://www.ppmy.cn/news/380413.html

相关文章

Matter实战系列-----3.Matter Light和Switch配网和控制实验

专有名词&#xff1a; OT-RCP&#xff1a; Open Thread Radio Co-Processor 。 Thread 无线协处理器 OTBR&#xff1a; Open Thread Board Router 。 Thread 边界路由器 chip-tool&#xff1a; Linux 应用程序。用于 Matter 协议控制 ot-ctl&#xff1a; Thread 网络控…

iOS蓝牙扫描的坑

一、后台扫描 手机作为中心模式(client): 打开后台模式中的使用蓝牙功能 TARGET→Capabilities→Background Modes→Uses Bluetooth LE accessories(勾选) 二、扫描设备方法 centralManager为蓝牙中心模块 // centralManager.scanForPeripherals(withServices: nil, opt…

windows输入模式切换

电脑ins键&#xff08;Insert Key&#xff09;位置&#xff0c; 可以通过按键实现文本输入模式的切换。一般情况下为光标模式&#xff0c;新输入的字插入到光标位置&#xff0c;原来的字相应后移。如下图&#xff0c; 另一种较少使用的模式是覆盖模式&#xff0c;光标位置新输…

Alt+Tab快捷键:使用键盘实现众多窗口情况下的多任务快速切换,提高打工效率

忙的时候同时开了很多窗口&#xff0c;每次都移到任务栏太麻烦了&#xff0c;这时用AltTab快捷键实现多任务间的快速切换&#xff0c;示意图如下&#xff1a; 打开后出现当前的窗口缩略图&#xff0c;松开Alt键&#xff0c;默认切换到下一个窗口。 使用左右可以进行选择。 另一…

每日一题面试题 - 持续更新

1、undefined和null的区别-20230614 undefined&#xff1a; &#xff08;1&#xff09;声明了一个变量&#xff0c;但没有赋值 &#xff08;2&#xff09;对象属性没有赋值 &#xff08;3&#xff09;调用函数没有提供相应的参数 &#xff08;4&#xff09;函数没有返回值&…

Windows(包括Edge)快捷键 ALT+TAB 切换效果的设置

有没有小伙伴发现&#xff0c;在 Edge 浏览器打开多个标签的时候&#xff0c;想切换回之前打开的其他应用&#xff0c;却莫名的切换回了浏览过的上一个 Edge 标签页。 这时&#xff0c;我们可以修改 windows 设置来调整到我们想要的切换效果。 *可以看到总共有4个选项&#…

Maya常用快捷键有哪些?Maya快捷键大全

Maya是有名的三维动画制作软件&#xff0c;很多小白学习Maya不知道快捷键&#xff0c;总是一个一个的点击&#xff0c;大大的影响了制作速度&#xff0c;快捷键可以提升制作效率&#xff0c;大家一定要熟记啊&#xff01;本期内容小编为大家讲解Maya常用快捷键有哪些&#xff1…

Goland 常用快捷键集锦

Goland 常用快捷键 下面列举了一些 Goland 中经常使用到的快捷键。 1) 文件操作相关的快捷键 快捷键作用Ctrl E打开最近浏览过的文件Ctrl N快速打开某个 struct 结构体所在的文件Ctrl Shift N快速打开文件Shift F6重命名文件夹、文件、方法、变量名等 2) 代码格式化相…