Javaweb学习之Vue数据绑定(五)

前期回顾

Javaweb学习之Vue实践小界面(四)-CSDN博客 

认识数据绑定

Vue.js 中的数据绑定是一个核心概念,它极大地简化了前端开发中数据与视图(DOM)之间的同步问题。Vue.js 通过其响应式系统实现了数据的双向绑定(在 Vue 2.x 中主要是单向数据流结合视图层的双向绑定,而在 Vue 3.x 中通过 Composition API 提供了更灵活的响应式系统),这意味着当数据变化时,视图会自动更新以反映这些变化,反之亦然(在表单输入等场景下)。

1.单向绑定

单向绑定(One-Way Binding)指的是数据从模型(Vue 实例的数据)流向视图(DOM)(DOM是什么?),而视图的变化不会影响数据。它是一种将数据从 Vue 实例传递到视图的方式。

1.1. 插值(Interpolation)
  • 基本用法:使用 {{ }} 符号将 Vue 实例中的数据绑定到视图中。
    <div id="app"><p>{{ message }}</p>
    </div><script>new Vue({el: '#app',data: {message: 'Hello Vue!'}});
    </script>
    

    这里 message 的值会被插入到 <p> 标签中。

1.2. 指令绑定
  • v-bind 指令:用于将数据绑定到 HTML 属性上。

    <div id="app"><a v-bind:href="url">Go to Vue</a>
    </div><script>new Vue({el: '#app',data: {url: 'https://vuejs.org'}});
    </script>
    

    这里 url 的值将被绑定到 <a> 标签的 href 属性上。

  • 简写v-bind 可以简写为 :

    <a :href="url">Go to Vue</a>
    
1.3. v-bind 的对象语法
  • 你可以同时绑定多个属性:
    <div id="app"><img v-bind="imgAttributes">
    </div><script>new Vue({el: '#app',data: {imgAttributes: {src: 'image.jpg',alt: 'An image'}}});
    </script>
    

2. 双向绑定

双向绑定(Two-Way Binding)允许数据在视图和模型之间双向同步。它意味着当数据发生变化时,视图自动更新;反之,当视图中的值被修改时,数据也会同步变化。

2.1. v-model 指令
  • 基本用法v-model 用于表单输入元素(如 <input><textarea> 和 <select>)以实现双向数据绑定。
    <div id="app"><input v-model="message" placeholder="Type something"><p>The input value is: {{ message }}</p>
    </div><script>new Vue({el: '#app',data: {message: ''}});
    </script>
    

  • 这里,输入框的值和 message 之间会保持同步。输入框中的值改变时,message 的值也会更新,反之亦然。
2.2. 修饰符
  • .lazy 修饰符v-model 默认在每次输入时更新数据。.lazy 修饰符可以在失去焦点时才更新数据。
<input v-model.lazy="message">
  • .number 修饰符:将输入的值自动转换为数字。
<input v-model.number="age">
  • .trim 修饰符:自动去除输入值的首尾空格。
<input v-model.trim="message">
2.3. 使用 v-model 在组件中
  • 自定义组件:在自定义组件中,v-model 需要配合 model 选项和 prop 来使用。
<custom-input v-model="inputValue"></custom-input><script>Vue.component('custom-input', {props: ['value'],template: '<input :value="value" @input="$emit(\'input\', $event.target.value)">'});
</script>

在这个示例中,自定义组件通过 $emit('input', newValue) 将更新传递到父组件中,v-model 自动处理这个更新。

3. 单向绑定与双向绑定的比较

  • 单向绑定适用于那些数据不需要反向同步的场景,比如显示静态内容或从数据源加载内容到视图。
  • 双向绑定适用于表单输入等需要保持数据与视图同步的场景。它使得用户的输入可以直接反映到 Vue 实例的数据中,而不需要手动处理每次数据的变化。

4. 实际应用

  • 表单处理:使用 v-model 在表单中实现用户输入的双向绑定,简化表单处理和数据验证。
  • 动态样式和类:使用单向绑定(v-bind)动态应用样式和类。
  • 组件设计:利用 v-model 在组件中实现双向绑定,提升组件的可复用性和可维护性。

实例: 

<template><div class="hello"><input type="text" v-model="username" /><input type="text" v-model.lazy="password" /><input type="text" v-model.trim="id" /><p>{{ username }},{{ password }},{{ id }}</p><button @click="clickGetName">获取用户名</button></div>
</template><script>
export default {name: "HelloWorld",data() {return {username: "",password: "",id: "",};},methods: {clickGetName() {console.log(this.username);},},};
</script>

拓展

DOM是什么?

DOM(Document Object Model,文档对象模型)是一种跨平台、与语言无关的编程接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。在Web开发中,DOM特别指的是HTML和XML文档的编程接口。通过DOM,开发者可以构建动态的、可交互的网页应用。

DOM的基本概念

  • 文档(Document):在Web环境中,文档通常指的是加载在浏览器窗口中的HTML或XML文件。
  • 对象(Object):在DOM中,文档被表示为对象,这些对象可以通过编程方式被访问和操作。
  • 模型(Model):模型是一种表示数据结构的方式。在DOM中,这个模型表示了文档的结构,包括标签、属性、文本等。

DOM的作用

DOM的主要作用是让开发者能够通过编程方式访问和操作网页的内容。这意味着你可以使用JavaScript(或其他支持DOM的编程语言)来添加、删除、修改或移动网页上的元素,以及改变它们的样式或行为。

DOM的结构

DOM将文档表示为一个由节点(node)构成的树状结构。每个节点都是一个对象,表示文档中的一部分,如元素(element)、属性(attribute)、文本(text)等。

  • 根节点(Root Node):对于HTML文档,根节点是<html>元素。
  • 元素节点(Element Node):代表文档中的HTML或XML元素,如<div><p>等。
  • 属性节点(Attribute Node):代表元素的属性,如<img src="image.jpg">中的src属性。
  • 文本节点(Text Node):包含文本内容,如元素之间的文字。
  • 注释节点(Comment Node):包含注释内容,如<!-- 这是一个注释 -->

使用DOM

在JavaScript中,你可以使用DOM API来访问和操作DOM树。例如,你可以使用document.getElementById()来查找具有特定ID的元素,使用element.style.color = 'red';来改变元素的样式,或者使用element.appendChild(newElement);来向元素中添加子元素。

注意事项

  • DOM操作可能会对性能产生影响,特别是在处理大量元素或频繁进行DOM操作时。因此,在开发时应该注意优化DOM操作。
  • 现代浏览器提供了许多新的API和特性来改进DOM的性能和易用性,例如DocumentFragmentclassList等。
  • 随着Web标准的不断发展,DOM也在持续演进。因此,开发者应该关注最新的Web标准和浏览器兼容性信息。

BOM是什么

BOM(Browser Object Model,浏览器对象模型)是一个与浏览器交互的接口,它提供了独立于内容的、可以与浏览器窗口进行互动的对象。BOM 主要由一系列与浏览器窗口进行交互的对象组成,而不是像 DOM 那样专注于文档内容。

BOM 的核心对象是 window,它代表了浏览器的一个实例(通常是一个标签页或窗口),并提供了操作浏览器窗口的方法和属性。通过 window 对象,你可以访问浏览器的历史记录(通过 history 对象)、当前 URL(通过 location 对象)、浏览器窗口的尺寸和位置(通过 screen 对象和 window 对象自身的属性和方法),以及执行诸如打开新窗口、移动窗口、调整窗口大小等操作。

除了 window 对象外,BOM 还包含了一些其他对象,如 navigator(提供有关浏览器的信息)、screen(提供有关用户屏幕的信息)、localStorage 和 sessionStorage(提供在浏览器端存储数据的功能)等。

需要注意的是,BOM 并没有一个正式的标准,不同的浏览器厂商可能会实现不同的功能和接口。因此,在使用 BOM 时,开发者需要特别注意跨浏览器兼容性问题。

总的来说,BOM 是 Web 开发中不可或缺的一部分,它允许开发者通过编程方式控制浏览器窗口的行为和外观,从而创建更加丰富和动态的 Web 应用。

DOM(文档对象模型)和BOM(浏览器对象模型)的关系可以理解为:DOM专注于操作网页的文档结构,而BOM则负责管理浏览器窗口与网页之间的交互,两者共同协作以实现动态、交互式的Web页面。

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

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

相关文章

【Python Web开发】Flask+HTML学习笔记

目录 Flask框架一、安装flask库二、运行一个网页三、库函数及变量 HTML标签语言一、基本格式二、标签2.1 块级标签2.1.1 标题2.1.2 div2.1.3 图片2.1.4 列表2.1.5 表格 2.2 行内标签2.2.1 span2.2.2 超链接2.2.3 输入 2.3 其他标签2.3.1 提交表单 Flask框架 一、安装flask库 …

电阻柜柜体采用不锈钢材质有什么优点

电阻柜柜体采用不锈钢材质有什么优点&#xff1a; 1. **耐腐蚀性**&#xff1a;不锈钢材质具有极好的耐腐蚀性&#xff0c;能有效抵抗各种腐蚀物质的侵蚀&#xff0c;确保设备经久耐用。 2. **美观大方**&#xff1a;不锈钢表面光滑&#xff0c;质感细腻&#xff0c;呈现出大气…

Elasticsearch写入、读取、更新、删除以及批量操作(golang)

目录 1、背景 2、elasticsearch基础操作 2.1 创建es链接客户端 2.2 创建、删除索引 2.3 插入文档 2.3 查询文档 2.4 删除一条文档 2.5 更新文档 2.6 逻辑查询 2.7 滚动查询(批量查询) 2.8 批量插入数据 2.9 批量更新文档 2.10 批量删除文档 3、检索条件设置 4、测…

探索Unity与C#的无限潜能:从新手到高手的编程之旅

在数字创意与技术创新交织的今天&#xff0c;Unity游戏引擎凭借其强大的跨平台能力和灵活的编程接口&#xff0c;成为了无数开发者心中的首选。而C#&#xff0c;作为Unity的官方脚本语言&#xff0c;更是以其面向对象的特性和丰富的库支持&#xff0c;为游戏开发注入了无限可能…

Golang | Leetcode Golang题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; func getMoneyAmount(n int) int {f : make([][]int, n1)for i : range f {f[i] make([]int, n1)}for i : n - 1; i > 1; i-- {for j : i 1; j < n; j {f[i][j] j f[i][j-1]for k : i; k < j; k {cost : k max(f[i][k-1], f[…

关于Scrapy的那些事儿(四)Scrapy Shell

Scrapy Shell launch Scrapy shell 使用如下命令&#xff1a; scrapy shell <url>当运行scrapy shell的时候&#xff0c;它为我们提供了一些功能函数&#xff1a; shelp() :打印可用对象和快捷命令的帮助列表fetch&#xff08;request or url&#xff09;&#xff1a;…

CMake构建学习笔记11-minizip库的构建

准确来说&#xff0c;minizip其实是zlib提供的辅助工具&#xff0c;位于zlib库的contrib文件夹内。minizip提供了更为高级一点的接口&#xff0c;能直接操作文件进行压缩。不过&#xff0c;有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式&#…

Java开发工程师-匹配性岗位(借鉴性质)

1.匹配性质 技能迁移:Java开发工程师通常具备较强的编程能力、逻辑思维和问题解决能力,这些技能可以迁移到其他领域。行业选择:考虑目前行业趋势以及未来发展方向,Java工程师可以转向大数据、人工智能、云计算等等领域。个人兴趣与职业发展:转行时个人的兴趣和职业发展规划…

1.1量化交易的定义与魅力

Hey&#xff0c;Python高手们&#xff0c;欢迎来到量化交易的世界&#xff01;在这里&#xff0c;我们不谈风花雪月&#xff0c;只谈数字和代码。量化交易&#xff0c;听起来是不是有点像是“用电脑代替人脑做交易”的黑科技&#xff1f;没错&#xff0c;你猜对了&#xff01; …

【JAVA入门】Day28 - 数据结构

【JAVA入门】Day28 - 数据结构 文章目录 【JAVA入门】Day28 - 数据结构一、栈二、队列三、数组3.1 ArrayList 四、链表4.1 LinkedList 五、二叉树5.1 二叉查找树5.2 二叉树的遍历方式5.3 平衡二叉树5.4 平衡二叉树的旋转5.5 平衡二叉树需要旋转的几种情况 六、红黑树6.1 红黑规…

永成防回水防回气装置煤矿毫不犹豫选择

永成防回水防回气装置煤矿毫不犹豫选择&#xff0c;不敢说我们有多好&#xff0c;我们只把简单的事做好&#xff0c;用心服务&#xff0c;因为品质&#xff0c;所以信任。因为信任&#xff0c;所以值得选择。 本防回水防回气装置是一种用于煤矿瓦斯管路爆渣和燃烧时防止回火、…

abstract类

1 问题 abstract类不能用 new运算符创建对象&#xff0c;必须产生其子类&#xff0c;由子类创建对象。若 abstract类的类体中有 abstract()方法&#xff0c;则只允许声明&#xff0c;不能带有方法体&#xff0c;而该类的子类必须实现 abstract()方法。一个abstract类只关心子类…

3_1_PID控制原理

自从计算机进入控制领域以来&#xff0c;用数字计算机代替模拟计算机调节器组成计算机控制系统&#xff0c;不仅可以用软件实现PID控制算法&#xff0c;而且可以利用计算机的逻辑功能&#xff0c;使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法&#x…

[Algorithm][综合训练][奇数位丢弃][求和][计算字符串的编辑距离]详细讲解

目录 1.奇数位丢弃1.题目链接2.算法原理详解 && 代码实现 2.求和1.题目链接2.算法原理详解 && 代码实现 3.计算字符串的编辑距离1.题目链接2.算法原理详解 && 代码实现 1.奇数位丢弃 1.题目链接 奇数位丢弃 2.算法原理详解 && 代码实现 解法…

YOLOv9改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题&#xff1a; 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值&#xff0c;这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足&#xff1a; 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…

计算机网络速成(三)

一、网络协议与模型 什么是协议&#xff1f; 协议是指计算机系统中完成特定任务所必需的规则和约定&#xff0c;特别是数据传输和交换的规则和约定。OSI和TCP/IP是什么&#xff1f; OSI&#xff08;开放式系统互连参考模型&#xff09;是一种网络架构模型&#xff0c;将网络系…

linux配置jenkins环境

目录 一、安装javal环境 二、安装ansible 三、安装git 四、配置服务器免密登陆 五、安装jenkins 一、安装java环境 本次安装jdk的版本为11&#xff0c;jdk的版本需要和jenkins版本相匹配 1、下载jdk&#xff0c;可以去oracle官网注册账号进行下载&#xff0c;不想折腾的可…

Redis与SpringMVC的整合与最佳实践

整合Redis与Spring MVC&#xff08;现在通常是Spring Boot的一部分&#xff09;可以提高应用性能&#xff0c;特别是在处理大量数据缓存和会话状态管理方面。 下面是一些关于如何整合Redis与Spring MVC的最佳实践&#xff1a; 1. 引入依赖 首先&#xff0c;你需要在你的项目中…

【Java】Maven多环境切换实战(实操图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 Maven多环境配置学习4.2 切换环境4.2.1 先打包4.2.2 之后可以切换 五、总结…

【ACM独立出版 | 厦大主办】第五届计算机科学与管理科技国际学术会议(ICCSMT 2024,10月18-20)

第五届计算机科学与管理科技国际学术会议(ICCSMT 2024) 定于2024年10月18-20日在中国厦门举行。 会议旨在为从事“计算机科学”与“管理科技”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发展趋势&#xff0c;拓宽研究思路…