数据双向绑定

2023-11-12

#一、什么是双向绑定

我们先从单向绑定切入单向绑定非常简单,就是把Model绑定到View,当我们用JavaScript代码更新Model时,View就会自动更新双向绑定就很容易联想到了,在单向绑定的基础上,用户更新了View,Model的数据也自动被更新了,这种情况就是双向绑定举个栗子:

当用户填写表单时,View的状态就被更新了,如果此时可以自动更新Model的状态,

#二、双向绑定的原理是什么

我们都知道 Vue 是数据双向绑定的框架,双向绑定由三个重要部分构成

  • 数据层(Model):应用的数据及业务逻辑
  • 视图层(View):应用的展示效果,各类UI组件
  • 业务逻辑层(ViewModel):框架封装的核心,它负责将数据与视图关联起来

而上面的这个分层的架构方案,可以用一个专业术语进行称呼:MVVM这里的控制层的核心功能便是 “数据双向绑定” 。自然,我们只需弄懂它是什么,便可以进一步了解数据绑定的原理

#理解ViewModel

它的主要职责就是:

  • 数据变化后更新视图
  • 视图变化后更新数据

当然,它还有两个主要部分组成

  • 监听器(Observer):对所有数据的属性进行监听
  • 解析器(Compiler):对每个元素节点的指令进行扫描跟解析,根据指令模板替换数据,以及绑定相应的更新函数

#三、实现双向绑定

我们还是以Vue为例,先来看看Vue中的双向绑定流程是什么的

  1. new Vue()首先执行初始化,对data执行响应化处理,这个过程发生Observe中
  2. 同时对模板执行编译,找到其中动态绑定的数据,从data中获取并初始化视图,这个过程发生在Compile中
  3. 同时定义⼀个更新函数和Watcher,将来对应数据变化时Watcher会调用更新函数
  4. 由于data的某个key在⼀个视图中可能出现多次,所以每个key都需要⼀个管家Dep来管理多个Watcher
  5. 将来data中数据⼀旦发生变化,会首先找到对应的Dep,通知所有Watcher执行更新函数

流程图如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据双向绑定 的相关文章

随机推荐

  • 黑马程序员SSM-Spring学习笔记

    学完Spring之后是SpringMVC 文章目录 前言 一 注解开发 1 1 注解开发定义bean 1 2纯注解开发 1 3bean作用范围 1 4依赖注入 自动装配 1 5 第三方bean管理 1 6 总结 二 Spring整合MyBa
  • qt槽函数如何传递多个参数_Qt 信号槽如何传递参数(或带参数的信号槽)

    标签 信号槽如何传递参数 或带参数的信号槽 利用Qt进行程序开发时 有时需要信号槽来完成参数传递 带参数的信号槽在使用时 有几点需要注意的地方 下面结合实例进行介绍 第一点 当信号与槽函数的参数数量相同时 它们参数类型要完全一致 signa
  • LeetCode 27.移除元素

    文章目录 题目分析 解题思路 思路1 暴力求解 遍历 接口源码 思路2 空间换时间 接口源码 思路3 双指针 快慢指针 接口源码 题目链接 LeetCode 27 移除元素 题目分析 给你一个数组 nums 和一个值 val 你需要 原地
  • 推荐算法实战项目:FNN 原理以及案例实战(附完整 Python 代码)

    本文要介绍的是FNN模型 出自于张伟楠老师于2016年发表的论文 Deep Learning over Multi field Categorical Data 论文提出了两种深度学习模型 分别叫做FNN Factorisation Mac
  • JMeter接口压测和性能监测

    引言 今天我来和大家分享一篇关于JMeter接口压测和性能监测的文章 在现代互联网时代 应用程序的性能已经成为了一个非常重要的问题 并且对于许多公司的生存和发展都起着至关重要的作用 而在这其中 JMeter是一个非常实用的工具 可以帮助我们
  • html5养树游戏源码,奥日小屋:寻找精灵之树

    大家好我是Receiver 又到了一年一度的夏促时间啦 不知道如何剁手的盒友可以考虑入坑 奥日与黑暗森林 哟 作为一款15年的游戏放在现在来看仍然有惊艳的画风 音乐与游戏性 夏促期间五折史低 今天给大家带来的是寻找银之树的流程攻略 另外奥日
  • 【JavaSE】jdk8新特性

    尚硅谷JavaSE笔记合集 文章名 链接 JavaSE 异常 文章地址 JavaSE 常用类 String LocalDateTime 文章地址 JavaSE 枚举 文章地址 JavaSE 注解 文章地址 JavaSE 集合框架 文章地址
  • 【设计相关】UML类图和时序图介绍

    文章目录 一 什么是UML UML的定义 UML的应用场景 类图 Class Diagrams 类关系 继承关系 记忆技巧 案例 汽车关系 购票机 类说明 方法说明 时序图 Sequence Diagrams 一 什么是UML UML的定义
  • CGAL的简介及安装设置

    一 CGAL库的介绍 CGAL Computational Geometry Algorithms Library 库 计算几何算法库 是一个大型的C 几何数据结构和算法库 包含Delaunay三角网 网格生成 布尔运算的多边形 各种几何处
  • [苹果开发者账号]05 换收款的银行账号

    问题场景 新公司申请的苹果开发者账号 收费APP有收入 苹果打款进入了公司银行账号 但银行反馈说 账号不能结算这笔钱 根因是 财务搞错账号业务了 解决方法 要换苹果的收款账号 提醒 涉及苹果这种境外业务 但又是可以人民币结算的 一定要和当地
  • IAR error: a declaration cannot have a label

    在使用switch时 在case 后面申请变量会出现 error a declaration cannot have a label错误 原因 Case statements are only labels This means the c
  • 【安全技术】Java 实现加密数据库连接

    一 前言 在很多项目中 数据库相关的配置文件内容都是以明文的形式展示的 这存在一定的安全隐患 在开发和维护项目时 不仅要关注项目的性能 同时也要注重其安全性 二 实现思路 我们都知道项目启动时 Spring 容器会加载配置文件并读取文件中的
  • FreeRTOS学习-软件定时器管理

    1 简介 软件定时器用于在未来的某个时间执行某个预先指定的函数 或者以一个固定的频率周期性调度该函数 这个预先指定的函数称为软件定时器回调函数 它是由软件定时器服务调用的 软件定时器由FreeRTOS的内核控制 不需要硬件的支持 不与硬件定
  • smart device industry

    公司培训 讲了一下smart device industry 不知讲得对不对 第一层 Ip Core 例如Intel MIPS ARM 第二层 芯片制造商Silicone 例如 broadcom Qualcomm BlueCore inte
  • Office2016软件安装教程

    关注公众号 免费获取资料 解压压缩文件 点击office 2013 专业增强版 64位文件夹 根据自身系统选择位数 右击setup gt 以管理员的身份运行 3 勾选接收 继续 4 选择自定义安装 5 点击浏览 选在office 安装位置
  • STM32实战项目系列教程 (一)—— 循迹小车

    前言 以往我们看到很多学习单片机知识的教程往往是从单片机内部资源出发 这样的教程原理往往晦涩难懂 初学者很难系统的学习开发单片机的项目 而本次教程是从项目出发教你学习循迹小车的制作 整个项目采用 STM32 单片机作为控制器来实现 所以在学
  • 【vue2】el-table 从接口获取数据改变了,但是页面却没有正常渲染

    方法一 在el table上面添加一个 key 属性 指定一个唯一的值 然后数据改变后 我们更新这个唯一值 这样 Vue 会自动重新渲染该组件 1 获取随机uuid 创建在uuid js文件当中 获取唯一id export function
  • 7月15日---7月21日(计划50小时,实际12小时,还有5258小时)

    本周单位事情应该不算多 没事就在家看看文挡 切忌浮躁 一颗平常心 就当学东西了 业余爱好 就按照DDRAW 软引擎 OSG引擎 自制3D引擎去走 上午PHYSX 中午DDRAW引擎 下午加入GAMEDEMO程序 晚上文挡 周六日文档 擦 最
  • 哪个进程在访问这个恶意域名???

    哪个进程在访问这个恶意域名 背景 信息安全工程师很多时候需要通过某个恶意域名来判断主机失陷情况 恶意域名特征比较明显的 比较容易通过威胁情报找到相关线索 例如fr minexmr com 通过威胁情查询 该恶意域名比较容易判断该主机感染Wa
  • 数据双向绑定

    一 什么是双向绑定 我们先从单向绑定切入单向绑定非常简单 就是把Model绑定到View 当我们用JavaScript代码更新Model时 View就会自动更新双向绑定就很容易联想到了 在单向绑定的基础上 用户更新了View Model的数