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() {
                // 函数又嵌套了一层,不能直接使用inputText
                var _inputText = this.inputText
                this.newInfoArray = this.infoArray.filter(function (item) {
                    if (item.indexOf(_inputText) >= 0) {
                        return true
                    } else {
                        return false
                    }
                })
            }
        }
    })
</script>
  • 稍微优化一下:优化条件表达式

    • inputFunc() {
          var _inputText = this.inputText
          this.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.mfbz.cn/a/603958.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】STL — vector的接口讲解 +详细模拟实现

前言: 本章我们将学习STL中另一个重要的类模板vector… vector是表示可变大小数组的序列容器。就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。但是又不像数组&#xff0c;它的大小是可以动态改变的本质讲&#xff0c;vector使用动态分配数组来存储它的元素v…

智慧公厕的核心技术详解:物联网、云计算、大数据、自动化控制

公共厕所是城市的重要组成部分&#xff0c;而智慧公厕的建设和管理正成为城市发展的重要方向。智慧公厕的核心技术即是物联网、云计算、大数据和自动化控制。下面将以智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案例项目现场实景实图实例&#xff0c;详细介…

Sealos急速部署生产用k8s集群

最近一段时间部署k8s全部使用sealos了&#xff0c;整体使用感觉良好&#xff0c;基本没有什么坑。推荐给大家。 使用 Sealos&#xff0c;可以安装一个不包含任何组件的裸 Kubernetes 集群。 最大的好处是提供 99 年证书&#xff0c;用到我跑路是足够了。不用像之前kubeadm安装…

【计算机科学速成课】笔记一

文章目录 写在前面1.计算机的早期历史2.电子计算机3.布尔运算和逻辑门4.二进制5.算术逻辑单元-ALU6.寄存器和内存 写在前面 所有的一切源于这样一个网站——CS自学指南。 这是新手小白入门计算机科学必要了解的知识——【计算机科学速成课】[40集全/精校] - Crash Course Comp…

地平线的花样年华

北京车展在这个喧闹的“五一”假期落幕了&#xff0c;它留给我们许多思考。 虽然社会面的传播焦点落在了“网红”两个字上&#xff0c;但技术的更新依然如暗流涌动&#xff0c;给这届北京车展写下注脚。整个过程前后&#xff0c;最重要和吸引了最多目光的&#xff0c;是智驾&a…

2024蓝桥杯CTF writeUP--cc

给了个网页&#xff0c;里面有加密算法&#xff0c;密钥&#xff0c;密文 使用在线解码工具 CTF最全在线工具整理_在线ctf工具-CSDN博客 将输出的密文&#xff0c;密钥&#xff0c;vi&#xff0c;加密方式一一对应

Linux变量的认识及环境变量配置详解

文章目录 1、变量的划分2、局部变量3、全局变量4、环境变量4.1、概述4.2、配置临时环境变量4.3、配置永久环境变量4.3.1、用户级配置文件1&#xff09;配置方法一&#xff1a;~/.bashrc文件2&#xff09;配置方法二&#xff1a;~/.profile文件3&#xff09;配置方法三&#xff…

生产制造中刀具管理系统,帮助工厂不再频繁换刀

一、刀具管理的定义与重要性 刀具管理是指对生产过程中使用的各种刀具进行计划、采购、存储、分配、使用、监控、维修和报废等全过程的管理。刀具作为制造过程中的直接工具&#xff0c;其性能、质量和使用效率直接影响产品的加工精度、表面质量和生产效率。因此&#xff0c;建…

ansible—playbook的template、tags、roles模块

目录 一、template 1、简介 2、template模块实例 1.先准备一个以.j2结尾的template模板文件&#xff0c;设置引用的变量&#xff0c;ansible上要先安装httpd 2、修改主机清单文件&#xff0c;使用主机变量定义一个变量名相同而值不同的变量 3、主机添加hosts 4、编写pla…

【漏洞复现】金和OA FileDownLoad接口处存在任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

词袋法TFIDF

Tf-idf⽂本特征提取 TF-IDF的主要思想是&#xff1a;如果某个词或短语在⼀篇⽂章中出现的概率⾼&#xff0c;并且在其他⽂章中很少出现&#xff0c;则认为此词或者短语具有很好的类别区分能⼒&#xff0c;适合⽤来分类。TF-IDF作⽤&#xff1a;⽤以评估⼀字词对于⼀个⽂件集或…

数据结构-线性表-链表-2.3-1

设计一个递归算法&#xff0c;删除不带头结点的单链表L中所有值为x的结点。 void del(Linkllist &L&#xff0c;int x){LNode *p;if(LNULL){return;}if(L->datax){pL;LL->next;;free(p);del(L,x);}else{del(L->next,x);} } 时间复杂度为O(n)

Linux系统编程--网络编程

一、OSI网络七层模型 OSI模型将整个网络通信过程分解为七个层次&#xff0c;每个层次都为网络通信提供了特定的功能。以下是OSI模型的七个层次&#xff0c;从上到下依次是&#xff1a; 应用层&#xff08;Application Layer&#xff09;&#xff1a;为应用软件提供网络服务&am…

盘点四种计算数组中元素值为1的个数的方法

目录 一、引言 二、方法一&#xff1a;基础循环遍历 三、方法二&#xff1a;列表推导式 四、方法三&#xff1a;使用内置函数sum和生成器表达式 五、方法四&#xff1a;使用NumPy库 六、性能比较 七、性能结果分析与讨论 八、最佳实践 九、总结 一、引言 在编程和数…

Linux:进程通信(二)信号的保存

目录 一、信号的处理是否是立即处理的&#xff1f; 二、信号如何保存 1、阻塞、未决、递达 2、信号集 3、信号集操作函数 4、sigprocmask函数 5、sigpending 函数 上篇文章我们讲解了信号的产生&#xff1a;Linux&#xff1a;进程信号&#xff08;一&#xff09;信号的产…

7天精通Web APIs——-Bom操作(理论+实战)(第五天)

一、window对象 1.1 window对象和bom的关系 首先理解dom和bom之间的关系 显然bom的范围比较大 bom的全称为浏览器对象模型 window是bom的核心对象&#xff0c;window里面有很多属性和方法&#xff0c;用于实现浏览器与 JavaScript 代码之间的交互。作为 JavaScript 的全局对…

项目管理-项目绩效域2/2

项目管理&#xff1a;每天进步一点点~ 活到老&#xff0c;学到老 ヾ(◍∇◍)&#xff89;&#xff9e; 何时学习都不晚&#xff0c;加油 八大绩效域包括&#xff1a;“团干部 策划开公交” 团队、干系人、不确定性、测试、规划、开发方法与生命周期、项目工作、交付。 上节…

淘宝评论电商API接口:便捷查询商品真实评价

随着电商的快速发展&#xff0c;用户对于商品的评价越来越重要。淘宝作为中国最大的电商平台&#xff0c;拥有海量的商品和用户评价数据。联讯数据为了提供便捷的商品评价查询服务&#xff0c;淘宝推出了评论电商API接口。 什么是淘宝评论电商API接口 淘宝评论电商API接口是淘…

抖音赚钱可以看看这些小众赛道,很多人都赚到了自己的第一个一百万!2024适合小白入手的项目!白手起家新手小白创业真经

抖音创业最大的魅力是什么&#xff1f; 如果你还想创业&#xff0c;还想在抖音这个赛道上发光发热&#xff0c;不妨停下来思考一下这个问题。 那就是可以让一个及其小众的小品类的产品&#xff0c;捅破天花板&#xff01;达到一个不可思议的销售额&#xff01;这就是我的答案&…

Windows注册表

注册表 一.概述 注册表&#xff08;Registry&#xff09;是Microsoft Windows中的一个重要的数据库&#xff0c;用于[存储系统]和[应用程序]的设置信息。早在[Windows 3.0]推出[OLE]技术的时候&#xff0c;注册表就已经出现。随后推出的[Windows NT]是第一个从系统级别广泛使…