前端开发:Vue中数据绑定原理

Vue 中最大的一个特征就是数据的双向绑定,而这种双向绑定的形式,一方面表现在元数据与衍生数据之间的响应,另一方面表现在元数据与视图之间的响应,而这些响应的实现方式,依赖的是数据链,因此,要了解数据绑定的原理,先要理解下面两方面内容。

一、 Vue中数据链

所谓数据链,它是一种数据关联的形式,在这种形式中,有一到多个的起始数据点,称之为元数据,而由这些元数据因某种关系衍生出的数据,称之为衍生数据,元数据与衍生数据通过数据节点交织在一起,形成数据结构网,而这种结构网,我们称之为数据链。
在这里插入图片描述
  在Vue 中,当数据链中的元数据变化时,与其关联的衍生数据,通过数据链,完成同步更新,实现数据双向绑定的效果;在Vue 实例化对象中,computed选项值,可以为开发人员生成衍生对象,当元数据变化时,生成的衍生对象将会同步更新。

实例: 使用衍生数据显示“张三,你好!”

1. 功能描述

新建一个名称为SayHello.vue的组件,在返回的数据对象中,添加一项名称为“name”的属性,初始值为“张三”,同时,在computed配置选项中,添加一个名为sayHelloName的函数,在函数中返回“张三,你好!”,并在页面中执行该函数。

2. 实现代码

在项目的components 文件夹中,新建一个名称为“ch3”的子文件夹,在这个子文件夹中,添加一个名为“SayHello”的.vue文件,在文件中加入如清单所示代码。

代码清单 SayHello.vue代码
<template>
  <div>
    <div>{{ name }}</div>
    <div>{{ sayHelloName }}</div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      name: "张三",
    };
  },
  computed: {
    sayHelloName() {
      return this.name + ",你好!";
    }
  },
};
</script>
<style scoped>
div {
  margin: 10px;
  text-align: left;
}
</style>

SayHello.vue文件是一个独立的组件,需要将它导入到根组件App.vue中,并声明该组件,最后,在模板中以标签形式应用该组件,因此,App.vue文件修改后的代码,如下列代码清单所示。

<template>
  <SayHello />
</template>

<script>
import SayHello from "./components/ch3/SayHello.vue";

export default {
  name: "App",
  components: {
    SayHello
  }
};
</script>

<style>
...省略样式代码
</style>

3.页面效果

保存代码后,页面在Chrome浏览器下执行的页面效果如图下图所示。
在这里插入图片描述

4. 源码分析

在Vue 实例化配置对象中,computed选项中可以生成衍生数据,生成过程由函数来完成,该函数不接收参数,在函数体中,由于this指向实例化的Vue 对象,因此,它可以访问所有实例化对象中挂载的属性值,如this.name,表示元数据值。

此外,computed选项中的函数,虽然可以访问实例化对象中挂载的全部属性值,但它在函数中,必须使用return 语句,返回计算或衍生后的数据,通过这种形式,才可以在模板中使用双大括号方式执行函数,接收并显示返回的数据。

因此,示例中的sayHelloName函数中,先获取元数据name值,并添加“,你好!”形成一个衍生数据,同时,作用函数的返回值;当在模板中,调用该函数时,则直接将接收到的衍生数据显示在页面中,由于是衍生数据,当元数所变化时,将会通过数据链形式,同步衍生数据,因此,衍生数据也会同步更新。即修改name值为“李四”时,页面将直接显示“李四,你好!”的字样。

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

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

相关文章

未来汽车驾驶还会有趣吗?车辆动力学系统简史

未来汽车驾驶还会有趣吗&#xff1f;车辆动力学系统简史 本篇文章来源&#xff1a;Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…

量子纠错--shor‘s 码

定理1 (量子纠错的条件) C是一组量子编码&#xff0c;P是映射到C上的投影算子。假设是一个算子元素描述的量子操作&#xff0c;那么基于量子编码C&#xff0c;存在一个能对抗描述的噪声的纠错操作R的充要条件是 对某个复元素厄米矩阵成立。 将算子元素称为导致的错误。如果这样…

【大模型实战篇】大模型分词算法Unigram及代码示例

1. 算法原理介绍 与 BPE 分词&#xff08;参考《BPE原理及代码示例》&#xff09;和 WordPiece 分词&#xff08;参考《WordPiece原理及代码示例》&#xff09;不同&#xff0c;Unigram 分词方法【1】是从一个包含足够多字符串或词元的初始集合开始&#xff0c;迭代地删除其中的…

WPF+MVVM案例实战(四)- 自定义GroupBox边框样式实现

文章目录 1、项目准备2、功能实现1、EnviromentModel.cs 代码2、GroubBoxViewModel.cs 代码实现3、ViewModelLocator.cs 依赖注入4、GroubBoxWindow.xaml 样式布局5、数据绑定 3、效果展示4、资源获取 1、项目准备 打开项目 Wpf_Examples&#xff0c;新建 GroubBoxWindow.xaml…

龙蟠科技业绩压力显著:资产负债率持续攀升,产能利用率也不乐观

《港湾商业观察》施子夫 黄懿 去年十月至今两度递表后&#xff0c;10月17日&#xff0c;江苏龙蟠科技股份有限公司(以下简称&#xff0c;龙蟠科技&#xff1b;603906.SH&#xff0c;02465.HK)通过港交所主板上市聆讯。 很快&#xff0c;龙蟠科技发布公告称&#xff0c;公司全…

基于STM32的Android控制智能家政机器人

基于STM32的Android控制智能家政机器人 基于STM32的Android控制智能家政机器人一、项目背景与意义二、系统设计方案三、硬件电路设计四、软件设计与实现4.1 Android端软件设计4.2 机器人端软件设计 五、系统调试与测试六、结论与展望七、附录 基于STM32的Android控制智能家政机…

信息安全工程师(55)网络安全漏洞概述

一、定义 网络安全漏洞&#xff0c;又称为脆弱性&#xff0c;是网络安全信息系统中与安全策略相冲突的缺陷&#xff0c;这种缺陷也称为安全隐患。漏洞可能导致机密性受损、完整性破坏、可用性降低、抗抵赖性缺失、可控性下降、真实性不保等问题。 二、分类 网络安全漏洞可以根据…

HDU Sum

题目大意&#xff1a;给你一个数字 n &#xff0c;n 个数字能分成多少组分类情况。 思路&#xff1a;这题要用插空法&#xff0c;一共 n 个数字&#xff0c;所以一共有 n - 1 个空可以插入&#xff0c;所以这道题目的答案就是&#xff0c;由二项式定理易得这个式子的和为 。但是…

Web应用框架-Django应用基础

1. 认识Django Django是一个用Python编写的开源高级Web框架&#xff0c; 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤&#xff1a; 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网&#xff1a; Djang…

UE4_Niagara基础实例—10、位置事件

效果&#xff1a; 若要为烟花火箭创建尾迹效果&#xff0c;则可将 生成位置事件&#xff08;Generate Location Event&#xff09; 模块放置到火箭发射器的粒子更新&#xff08;Particle Update&#xff09;组中。然后&#xff0c;尾迹发射器可使用位置数据生成跟随火箭的粒子…

离散制造和流程制造分别是什么?它们有什么区别?

为何有的企业生产过程看似一气呵成&#xff0c;而有的则是由多个环节组合而成&#xff1f;其实这就涉及到了制造业的两种常见生产模式。 流程制造离散制造 那么&#xff0c;在生产管理方面&#xff0c;离散制造和流程制造分别有什么特点、区别呢&#xff1f; 今天&#xff0…

C++游戏开发教程:从入门到进阶

C游戏开发教程&#xff1a;从入门到进阶 前言 在游戏开发的世界里&#xff0c;C以其高效的性能和灵活的特性&#xff0c;成为了众多游戏开发者的首选语言。在本教程中&#xff0c;我们将带您从基础知识入手&#xff0c;逐步深入到实际的游戏开发项目中。无论您是初学者还是有…

二百七十、Kettle——ClickHouse中增量导入清洗数据错误表

一、目的 比如原始数据100条&#xff0c;清洗后&#xff0c;90条正确数据在DWD层清洗表&#xff0c;10条错误数据在DWD层清洗数据错误表&#xff0c;所以清洗数据错误表任务一定要放在清洗表任务之后。 更关键的是&#xff0c;Hive中原本的SQL语句&#xff0c;放在ClickHouse…

深入理解Android WebView的加载流程与事件回调

在Android开发中&#xff0c;WebView用于显示网页和执行JavaScript。理解其加载流程和事件回调对于开发一个功能丰富且用户友好的基于Web的应用至关重要。本文将详细介绍 WebView 加载一个URL时的整个流程和相关的事件回调&#xff0c;帮助开发者更好地掌握其使用方法和处理可能…

数据库、数据仓库、数据湖和数据中台有什么区别

很多企业在面对数据存储和管理时不知道如何选择合适的方式&#xff0c;数据库、数据仓库、数据湖和数据中台&#xff0c;这些方式都是什么&#xff1f;有什么样的区别&#xff1f;企业根据其业务类型该选择哪一种&#xff1f;本文就针对这些问题&#xff0c;来探讨下这些方式都…

基于Netty构建WebSocket服务并实现项目群组聊天和实时消息通知推送

文章目录 前言需求分析技术预研Web端方案服务端技术 技术方案设计思路功能实现添加依赖自定义NettyServer自定义webSocketHandler使用NettyServer向在线用户发送消息 需要完善的地方 前言 我们的项目有个基于项目的在线文档编制模块&#xff0c;可以邀请多人项目组成员在线协同…

2024mathorcup大数据竞赛B题【电商品类货量预测及品类分仓规划】思路详解

问题 1&#xff1a;建立货量预测模型&#xff0c;对该仓储网络 350 个品类未来 3 个月&#xff08;7-9月&#xff09;每个月的库存量及销量进行预测&#xff0c;其中库存量根据历史每月数据预测月均库存量即可&#xff0c;填写表 1 的预测结果并放在正文中&#xff0c;并将完整…

Discuz发布原创AI帖子内容生成:起尔 | AI原创帖子内容生成插件开发定制

Discuz发布原创AI帖子内容生成&#xff1a;起尔 | AI原创帖子内容生成插件开发定制 在当今互联网快速发展的时代&#xff0c;内容创作成为了网站运营、社交媒体管理和个人博客维护不可或缺的一部分。然而&#xff0c;高质量内容的创作往往耗时耗力&#xff0c;特别是对于需要频…

实现prometheus+grafana的监控部署

直接贴部署用的文件信息了 kubectl label node xxx monitoringtrue 创建命名空间 kubectl create ns monitoring 部署operator kubectl apply -f operator-rbac.yml kubectl apply -f operator-dp.yml kubectl apply -f operator-crd.yml # 定义node-export kubectl app…

Qt 支持打包成安卓

1. 打开维护Qt&#xff0c;双击MaintenanceTool.exe 2.登陆进去,默认是添加或移除组件&#xff0c;点击下一步&#xff0c; 勾选Android, 点击下一步 3.更新安装中 4.进度100%&#xff0c;完成安装&#xff0c;重启。 5.打开 Qt Creator&#xff0c;编辑-》Preferences... 6.进…