vue 语法2

【5】条件渲染和列表渲染

(1)条件渲染v-if v-else-if v-else

  • 条件渲染根据表达式的真假值来渲染不同的元素或组件。

    • v-if:当表达式的值为真时,渲染该元素或组件。

    • v-else-if:当前面的 v-ifv-else-if 的表达式为假时,会评估这个 v-else-if 的表达式,如果为真,则渲染该元素或组件。

    • v-else:当前面的 v-ifv-else-if 的表达式都为假时,渲染该元素或组件

image-20240425173903239

<body>
<div id="app"><h2>当前分数>>>:{{score}}</h2><h2 v-if="score>=90">文字描述>>>:优秀</h2><h2 v-else-if="score>=60&&score<90">文字描述>>>:及格</h2><h2 v-else>文字描述>>>:不及格</h2></div>
</body><script>var vm = new Vue({el: "#app",data: {score: 99},})
</script>

(2)列表渲染v-for

  • 列表渲染用于渲染一组元素或组件的指令。
    • 语法:v-for="(item, index) in items" :key="index"
      • items 是一个数组或对象。
      • item 是当前遍历到的元素或属性值。
      • index 是当前元素的索引(对于数组)或属性的键(对于对象)。
      • :key 是一个绑定,它提供了一个唯一的标识符给每个节点,这对于 Vue 的虚拟 DOM 算法来说是必要的,以便能够高效地更新和重新排序节点

image-20240425184303485

<body>
<div id="app"><h2>整型遍历--(item, index) in 3</h2><ul><li v-for="(item, index) in 3" :key="index">元素:{{item}}, 索引:{{index}}</li></ul><h2>字符串遍历--(item, index) in 'n b'</h2><ul><li v-for="(item, index) in 'n b'" :key="index">元素:{{item}}, 索引:{{index}}</li></ul><h2>数组遍历--(item, index) in infoArray</h2><ul><li v-for="(item, index) in infoArray" :key="index">元素:{{item}}, 索引:{{index}}</li></ul><h2>对象遍历--(item, index) in 'n b'</h2><ul><li v-for="(value, key, index) in infoObj" :key="index">元素:{{key}}:{{value}}, 索引:{{index}}</li></ul></div>
</body><script>var vm = new Vue({el: "#app",data: {infoArray: ["n", "b"],infoObj: {"name": "bruce", "age": 18}},})
</script>

【6】input标签事件处理

(1)数据双向绑定v-model

  • v-model 用于在 input、textarea 或 select 等表单元素上创建双向数据绑定。双向数据绑定意味着,当表单元素的值发生变化时,Vue 实例中的数据也会自动更新;反之,当 Vue 实例中的数据发生变化时,表单元素的值也会相应地更新。

  • <input type="text" :value="inputText">和<input type="text" v-model="inputText">的区别

    • :value="inputText"
      • 它用于单向地绑定数据到元素的 value 属性上。
      • inputText 的值发生变化时,<input> 元素的值会更新,但反过来则不然——即用户输入的值不会更新到 inputText
      • 这种方式是单向的
    • v-model="inputText"
      • 它不仅仅设置元素的 value 属性,还监听输入事件(如 inputchange)来更新数据。
      • 当用户在 <input> 元素中输入文本时,inputText 的值会自动更新,同时,如果 inputText 的值在程序的其他部分被改变,<input> 元素的内容也会更新。
      • 这种方式是双向的

image-20240425190102532

<body>
<div id="app"><h2>单向数据绑定":value="inputText"</h2><label>输入框:<input type="text" :value="inputText1"></label><p>输入框文本>>>:{{inputText}}</p><h2>双向数据绑定v-model="inputText"</h2><label>输入框:<input type="text" v-model="inputText2"></label><p>输入框文本>>>:{{inputText}}</p></div>
</body><script>var vm = new Vue({el: "#app",data: {inputText1: "",inputText2: ""},})
</script>

(2)input标签常用修饰符

  • .lazy

    • 使用 .lazy 修饰符后,v-model 会在 change 事件触发时才更新数据,这通常意味着用户完成输入并离开输入框(如点击输入框外部或按 Tab 键)时,数据才会更新
  • .number

    • 数字类型开头会保留,一单出现非数字,后面的字符不在管
    • 非数字开头,保留所有的字符
  • .trim

    • 自动去除用户输入值的前后空格

image-20240425191416057

<body>
<div id="app"><h2>v-model.lazy:完成输入并离开触发数据更新</h2><label>输入框:<input type="text" v-model.lazy="inputText1"></label><p>输入框文本>>>:{{inputText1}}</p><h2>v-model.number:数字开头匹配数字,非数字开头匹配所有</h2><label>输入框:<input type="text" v-model.number="inputText2"></label><p>输入框文本>>>:{{inputText2}}</p><h2>v-model.trim:去除输入框首位空格</h2><label>输入框:<input type="text" v-model.trim="inputText3"></label><p>输入框文本>>>:{{inputText3}}</p></div>
</body><script>var vm = new Vue({el: "#app",data: {inputText1: "",inputText2: "",inputText3: "",},})
</script>

(3)input常用事件处理

  • input:当输入框进行输入的时候触发的事件
  • change:当元素的值发生改变时触发的事件
    • 只有输入结束以后才会进行判断的是否改变
    • 如:输入123,确认以后,在删除23,在输入23是不会触发change事件的
  • blur:当输入框失去焦点的时候触发的事件
  • focus:当输入框获得焦点的时候触发的事件

image-20240425193206294

<body>
<div id="app"><h2>四个事件可以放在一起</h2><label>输入框:<input @input="inputFunc" @focus="focusFunc" @change="changeFunc" @blur="blurFunc" type="text"v-model="inputText"></label><p>输入框文本>>>:{{inputText}}</p></div>
</body><script>var vm = new Vue({el: "#app",data: {inputText: "",},methods: {inputFunc() {console.log('触发输入事件')},focusFunc() {console.log('触发获得焦点事件')},changeFunc() {console.log('触发输入改变事件')},blurFunc() {console.log('触发失去焦点事件事件')},}})
</script>

【7】过滤案例

(1)要求

  • 已知一个字符串数组
  • 当输入框输入文本内容时,显示含有文本内容的字符串
  • 当输入框删除部分内容时,显示内容会重新匹配显示匹配成功的字符串

(2)实现效果

  • 过滤函数

    • this.newInfoArray = this.infoArray.filter(function (item) {  if (item.indexOf(_inputText) >= 0) {  return true  } else {  return false  }  
      })
      
    • this.infoArray.filter(...):对 infoArray 调用 filter 方法。

    • function (item) {...}:这是传递给 filter 的回调函数,它接受数组中的一个元素 item 作为参数。

    • item.indexOf(_inputText) >= 0:检查 item 是否包含 _inputText。如果包含(即 indexOf 返回的值大于或等于 0),则返回 true,否则返回 false

    • return truereturn false:根据 indexOf 的结果,决定当前元素是否应该包含在新数组中。

  • 封装局部变量

    • var _inputText = this.inputText
      
    • filter 的回调函数中直接使用 this.inputText,那么 this 将不会指向 Vue 实例,从而导致错误。

    • 通过将 this.inputText 的值赋给一个局部变量,可以确保在回调函数中正确地使用它。

image-20240425200408230

<body>
<div id="app"><h2>过滤案例</h2><label>输入框:<input @input="inputFunc" type="text" v-model="inputText"></label><hr><h2>信息列表</h2><ul><li v-for="(item,index) in newInfoArray" :key='index'>第【{{index + 1}}】条数据>>:{{item}}</li></ul></div>
</body><script>var vm = new Vue({el: "#app",data: {inputText: "",infoArray: ["a", "ae", "eo", "aei", "ei", "aeiou"],newInfoArray: ["a", "ae", "eo", "aei", "ei", "aeiou"]},methods: {inputFunc() {// 函数又嵌套了一层,不能直接使用inputTextvar _inputText = this.inputTextthis.newInfoArray = this.infoArray.filter(function (item) {if (item.indexOf(_inputText) >= 0) {return true} else {return false}})}}})
</script>
  • 稍微优化一下:优化条件表达式

    • inputFunc() {var _inputText = this.inputTextthis.newInfoArray = this.infoArray.filter(function (item) {return (item.indexOf(_inputText)) >= 0})
      }
      
  • 再次优化:使用箭头函数

    • inputFunc() {this.newInfoArray = this.infoArray.filter((item) => item.indexOf(this.inputText) >= 0)
      }
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/322574.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现公交线路查询系统项目【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现公交线路查询系统演示 摘要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本…

JavaScript数字分隔符

● 如果现在我们用一个很大的数字&#xff0c;例如2300000000&#xff0c;这样真的不便于我们进行阅读&#xff0c;我们希望用千位分隔符来隔开它&#xff0c;例如230,000,000; ● 下面我们使用_当作分隔符来尝试一下 const diameter 287_266_000_000; console.log(diameter)…

网络层协议之 IP 协议

IP 协议格式 4 位版本&#xff1a;此处的取值只有两个&#xff0c;4&#xff08;IPv4&#xff09;和 6&#xff08;IPv6&#xff09;&#xff0c;即指定 IP 协议的版本。 4 位首部长度&#xff1a;描述了 IP 报头多长&#xff0c;IP 报头是变长的&#xff0c;因为报头中的选项部…

“人工智能+”推进新质生产力发展论坛暨工作室实践实训基地授牌仪式圆满结束

4月27日&#xff0c;由江西财经大学现代经济管理学院主办的“人工智能”推进新质生产力发展论坛暨“江财现经管泰迪数智技术”校企工作室实践实训基地授牌仪式在江西财经大学现代经济管理学院共青城校区举行&#xff0c;学院院长王金海&#xff0c;副院长丁美东&#xff0c;副院…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么&#xff1f;Java是值传递还是引用传递&#xff1f;值传递和引用传递的区别是什么&#x…

引用数据类型 栈内存 堆内存

let m { a: 10, b: 20 }; let n m; n.a 15; console.log(m.a) // 15 原因&#xff1a;基本数据类型存储在栈内存中&#xff0c;引用数据类型存储在堆内存中 &#xff0c;引用数据类型存储在堆内存中会在栈内存中创建一个指针&#xff0c;栈内存中的这个指针指向堆内存中的地…

Blender材质,纹理,UV

1.材质Material&#xff0c;用于描述物体的表面性质&#xff0c;包含以下基本属性 -基础色 -金属/非金属 -粗糙度 -透光度 -凹凸细节 添加材质步骤&#xff1a; 1&#xff09;切换到材质预览模式 2&#xff09;打开材质面板 3&#xff09;添加一个材质&#xff0c;包括材…

Windows 10 中使用 Montreal-Forced-Aligner (MFA) 实现音频和文本强制对齐

文章目录 一、实现目标二、安装 Montreal-Forced-Aligner1、使用 Anaconda 虚拟环境2、修改默认下载路径3、安装 montreal-forced-aligner 及相关第三方包4、验证是否安装成功 三、下载声学模型和发音词典1、命令行方式下载2、手动方式下载 四、强制对齐1、准备音频及对应文本2…

[嵌入式系统-72]:RT-Thread-组件:单元测试框架utest

目录 utest 测试框架 ​编辑 测试用例定义 测试单元定义 utest 应用框图 2. utest API assert 宏 测试单元函数运行宏 测试用例导出宏 测试用例 LOG 输出接口 3. 配置使能 4. 应用范式 5. 测试用例运行要求 6. 运行测试用例 测试结果分析 7. 测试用例运行流程 …

14.集合、常见的数据结构

集合 概念 Java中的集合就是一个容器&#xff0c;用来存放Java对象。 集合在存放对象的时候&#xff0c;不同的容器&#xff0c;存放的方法实现是不一样的&#xff0c; Java中将这些不同实现的容器&#xff0c;往上抽取就形成了Java的集合体系。 Java集合中的根接口&#x…

MySQL数据库---增删查改汇总

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理MySQL数据库增删查改功能 主要是整理语法 争取做到要用什么语法 可以快速找到复制粘贴 增添语法 INSERT into tab(列名,列名,列名) values(内容,内容,内容); 插入一行数据 INSERT into tab(列名,…

邦注科技 模具保护器 CCD电子眼 专业工业视觉检测设备

模具保护器是一种用于保护模具的设备&#xff0c;可以在塑料压铸和冲床等加工过程中起到保护模具的作用。以下是关于模具保护器在保护塑料压铸和冲床模具方面的应用&#xff1a; 塑料压铸模具保护器&#xff1a; 防止碰撞&#xff1a;在塑料压铸过程中&#xff0c;模具可能会…

Android Studio报错:Constant expression required

【出现的问题】&#xff1a; 使用JDK17以上版本&#xff0c;switch语句报错&#xff1a;Constant expression required 【解决方法】&#xff1a; 在gradle.properties配置文件下添加代码&#xff1a; android.nonFinalResIdsfalse 如图&#xff1a; 接着再点击右上角的Sync…

数仓开发:DIM层数据处理

一、了解DIM层 这个就是数仓开发的分层架构 我们现在是在DIM层&#xff0c;从ods表中数据进行加工处理&#xff0c;导入到dwd层&#xff0c;但是记住我们依然是在DIM层&#xff0c;而非是上面的ODS和DWD层。 二、处理维度表数据 ①先确认hive的配置 -- 开启动态分区方案 -- …

Python深度学习基于Tensorflow(6)神经网络基础

文章目录 使用Tensorflow解决XOR问题激活函数正向传播和反向传播解决过拟合权重正则化Dropout正则化批量正则化 BatchNormal权重初始化残差连接 选择优化算法传统梯度更新算法动量算法NAG算法AdaGrad算法RMSProp算法Adam算法如何选择优化算法 使用tf.keras构建神经网络使用Sequ…

活动图与状态图:UML中流程图的精细化表达——专业解析系统动态性与状态变迁

流程图是一种通用的图形表示法&#xff0c;用以展示步骤、决策和循环等流程控制结构。它通常用于描述算法、程序执行流程或业务过程&#xff0c;关注于任务的顺序执行。流程图强调顺序、分支和循环&#xff0c;适用于详细说明具体的处理步骤&#xff0c;图形符号相对基础和通用…

Logfire-Python可观测平台快速上手

我最近在优化之前的FastAPI接入可观测性平台&#xff0c;正好分享一下Pydantic团队推出的logfire&#xff0c;希望对大家的Python工程化有帮助。 Github: https://github.com/pydantic/logfire 官网链接: Pydantic Logfire Documentation Logfire是Pydantic团队推出的可观测…

数据结构复习指导之二叉树的遍历

文章目录 二叉树 考纲内容 复习提示 1.二叉树的遍历 1.1先序遍历&#xff08;PreOrder&#xff09; 1.2中序遍历&#xff08;InOrder&#xff09; 1.3后序遍历&#xff08;PostOrder&#xff09; 1.4递归算法和非递归算法的转换 1.5层次遍历 1.6由遍历序列构造二叉树…

3.yolov5训练前的图片处理详解(python)

其实&#xff0c;yolov5模型可以分为深度网络、数据处理&#xff08;图片处理&#xff09;、损失函数、优化器选择、训练和预测及部分构成&#xff0c;相信大家对训练和预测的代码比较熟悉。前面两章我们根据代码和结构图了解了yolov5的深度网络&#xff0c;接下来看数据处理的…

力扣刷题--数组--第三天

今天再做两道二分查找的题目&#xff0c;关于二分查找的知识可看我前两篇博客。话不多说&#xff0c;直接开干&#xff01; 题目1&#xff1a;69.x 的平方根 题目详情&#xff1a;   给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。由于返回类型是整数&#…