当前位置: 首页 > article >正文

Vue前端开发:单向数据绑定

Vue是一个典型的 MVVM 框架,那什么是 MVVM 框架?它与MVC 框架相比而言,有了哪些改变?单向数据绑定在这个框架中是如何体现的?带着这些问题,我们进入接下来的内容学习。

一、MVC 框架演变过程

严格来说,MVC框架是一种设计思想,早期的前端技术MVC 结构来源于后端语言,如Java、C#语言,这些语言具有完整和成熟的 MVC 框架体系;随着前端处理业务的逻辑越来越复杂,便借鉴后端语言这种MVC框架体系,形成前端技术特有的MVC 框架。

它的结构与后端语言的MVC 一样,由Model、View、Controller三部分组成,它们各司其职,Model简称 M,数据模型层,用于定义数据结构和存储数据源;View 简称 V,视图层,用于展示数据界面和响应页面交互;Controller 简称 C,控制层,用于监听数据变化并处理页面交互逻辑,它们三者的关系如下图3-4所示。
在这里插入图片描述
但随着业务逻辑越来越复杂,使得Controller 层代码量也越来越多,显得冗余而无序,维护起来非常困难,这时,需要从Controller 层抽离出数据和逻辑处理部分,由专门的一个对象进行管理和维护,而这个对象,就是ViewModel。

通过抽离出ViewModel对象,使用逻辑层的结构更加清晰,ViewModel负责处理视图和数据逻辑关系,并双向绑定View和Model,使得ViewModel 对象更象一座桥梁,用于衔接 View 和 Model 层两端,它们的关系如下图3-5所示。
在这里插入图片描述
  在示意图3-5中,我们不难看出,原来 Controller 层需要处理所有的数据交互和业务逻辑,而改成 ViewModel 层后,则只需要处理针对 View 层的数据交互和业务逻辑,并且这种处理后的绑定是双向的,这样就使 View 和 Model 层的数据同步是完全自动的,用户无需手动操作DOM,只需关注业务逻辑。

二、单向绑定

在MVVM 框架下,Vue 的数据绑定都是双向的,但也能实现单向的数据绑定,所谓“单向”是针对“双向”而言的,也就是一个方向,即从数据源获取数据,到视图层中显示数据一个方向,在显示时并不会改变源数据,这种单向绑定的方式常用于绑定视图层中元素固定显示的内容、元素属性中,实例如下。

实例:数据单向绑定

1. 功能描述

在新建的组件中,添加一个div 和一个span元素,并使用单向数据绑定的方式,显示span元素的内容和控制元素的类别样式。

2. 实现代码

在项目components 文件夹的ch3子文件夹中,添加一个名为“OneWay”的.vue文件,在文件中加入如清单3-3所示代码。

代码清单3-3 OneWay.vue代码

<template>
  <div>
    <div>
      姓名:<span v-bind:class="fs">{{ name }}</span>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      name: "李小明",
      fs: "fs",
    };
  },
};
</script>
<style scoped>
.fs {
  font-size: 26px;
  color: red;
}
div {
  margin: 10px;
  text-align: left;
}
</style>

3. 页面效果

保存代码后,页面在Chrome浏览器下执行的页面效果如图3-6所示。
在这里插入图片描述
  4. 源码分析

在组件的实例化的配置对象中,先分别定义了“name”和“fs”对象属性,作为视图层绑定的数据源,然后在视图中通过 v-bind 指令绑定元素的class属性值,使用双大括号绑定元素显示的内容,这种绑定的方式就是单向的数据绑定,最后,当数据源发生变更后,视图层将自动同步变更后的数据。
在这里插入图片描述


http://www.kler.cn/news/363348.html

相关文章:

  • 迁移学习|ResNet18
  • 检索报告怎么开具
  • Apache Cordova学习计划
  • 根据前序、中序遍历序列构建二叉树-讲解与实现(C++)
  • Git 文件大小写混乱?
  • No.18 笔记 | XXE(XML 外部实体注入)漏洞原理、分类、利用及防御整理
  • 中信银行深化ESG理念 以金融高质量发展助力金融强国建设
  • asp.net core mvc发布时输出视图文件Views
  • CSP-J复赛集训200-300分(5):[CSP-J 2021] 插入排序
  • 【计算机网络】HTTP报文详解,HTTPS基于HTTP做了哪些改进?(面试经典题)
  • vue3学习记录-自定义指令
  • Python3入门--数据类型
  • 国内常见的 AI 工具,你都用过几个?
  • 【Android】自定义EditText
  • 交换基础简述
  • hive数据库,表操作
  • git 克隆并切换分支
  • 第九天 中间层异步编程
  • python 访问openai接口
  • 2024年软件设计师中级(软考中级)详细笔记【11】知识产权基础知识(分值2~3分)
  • 6、基于Python+爬虫+LDA+决策树的《富士山下》评论数据情感分析【开题+源程序+论文】
  • Spring Task介绍与基本使用
  • Konva框选移动
  • PPT自动化:掌握 python-pptx 的基础元素
  • 20240818 字节跳动 笔试
  • Python小游戏11——扑克牌消消看小游戏