简体转繁体,mvvm视图模型双向数据绑定的核心原理,阴囊潮湿

1 概述

2 MVVM,Model-View-ViewModel

3 双向数据绑定

4 监听 DOM 改动

5 监听模型数据改动,数据绑架

6 观察者形式,Observer

1 概述

JS 几个盛行的结构 Vuejs、Ember.js、AngularJS 都运用 MVVM 模简伯承式,该形式叫做视图模型双向数据绑定,以到达数据和视图快速同步的意图。本文就对其间触及的原理部分加以阐明(后续还有一篇模仿 完结)。首要表现便是表单元素值变,JS变量值改动,若页面上有输出,输出值也改动,典型的代码如下,vuejs.org 上供给的shampoo比如:

 1// HTML
2

3

{{ message }}


4
5

6
7// JS
8var app6 = new Vue({
9 el: '#app',
10 data: {
11 message: 'Hello Vue!'
12 }
13})

作用:



文内容包含但不限于:

  • MVVM 数简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润据双向绑定
  • DOM 事情监听
  • 数据绑架
  • 观察者形式

先从什么是 白凝冰MVVM 说起。

2 MVVM,Model-View-ViewModel

MVVM 拆开来是 Model-View-ViewModel,View,ViewModel,Model 三部分组成,它是一种前端开发的架构形式。

  • View :代表的是视图,模版简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润。它用来显现数据。
  • Model :代表的是模型、数据,春风汗马能够在 Model简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润 层中界说数据修正和操作的事务逻辑。
  • ViewModel :衔接 Model 和 View。

如图所示:



在 MVVM 的架构下,View 层(DOM展现层)和 Model 层(数据方针层)并没有直接联络,而是经过 ViewModel 层进行交互。ViewModel 层经过双向数据绑定将 View 层和 Model 层衔接了起来,使得 View 层和 Model 层的同步作业完浦银安盛满是主动的。

因而开发者只需重视事务逻辑,无需手动操作 DOM,杂乱的数据状况保护交给 MVVM 一致来办理,称之为数据驱动的开发办法。

3 双向数据绑定

便是指数据的传递有两个方向:

  • 方向1:从数据到视图,数据改动时,视图也改动。
  • 方向2:从视图到数据,例如 input 框的内容改动时,JS 保护的数据也会改动,同简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润时再次传递到视图上,视图也随之改动。

若要完结以pornos上的数据传递,咱们需求去监听数据改动和视图的改动,才干做出相应改动。

4 监听 DOM 改简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润变

监听 DOM 视图的改动是为了更新模型。咱们经过 DOM 事情就能够完结监听视图的改动,典型的 in糙皮骑甲put 的 change、input 事情都能够完结监听,经过事情处理器,完结对应的模型的数据改动。

前面比如中的 input 共赴洪蒙元素的值的不断改动,便是 DOM 的改动,咱们监听到之后自拍网,将模型变量 message 做同步更改!便是视图改动传递到了模型上。

那么为什么页面的展现也变了呢?便是下一个传递了。模型改动传递00后到视图上。数据的改龚磬冬变传递到视图上怎么完结的呢?便是监听数据完结的。

5 监听模型数据改动,数据绑架

怎么做到 message 模型变量的改动咱们能够监听到呢?其实是运用的 JS 中方针特点修正开封旅行的特别 get、set 办法完结的,示例代码如下:

 1var o = {}; // 创立一个新方针
2
3// 在方针中增加一个特点与存取描述符的示例
4var messageValue;
5Object.defin邵逸夫eProperty(o, "message", {
6 get : function(){
7 return messageValue;
8 },
9 set : function(普门品newValue){
10 messageValue = newValue;
11 },
12});

以上代码,咱们就为方针 o 界说了特点 message。一起在 o.message 时会调用 message 对应的 get 办法,在 o.message = "some message" 时会调用 message 的 set 办法来完结。能够预见,咱们能够在某个特点被设置修正时,履行咱们的特定代码,咱们正在监督某些特点的改动。有了这个监听,就能够完结当模型改动时,去更新方针的视图部分。

以上的代码,在规划上称之为:数据绑架。这个规划也是 MVVM 的中心原理之一。

关于 Object.defin琳eProperty 我们能够参阅:Object.defineProperty。除此之外 ES6 的 Proxy祝静婕微博 也能够完结此项功用。据称 vue3 就会运用 Proxy 替代 defineProperty。

真实完结时,往往一个模型的改动简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润,需求更新很多视图部分,因而规划时简体转繁体,mvvm视图模型双向数据绑定的中心原理,阴囊湿润,通常会选用观察者形式。

6 观察者形式,Observer

观察者形式(也叫模型 Model - 视图 View 形式、源 Source - 收听者 Listener 形式或隶属者形式)是规划形式的一种爱的价值。在此形式中,一个方针方针办理一切依靠它的观察者方针,并且在自身的状况改动时发出通知。也便是本例中,模型便是方针方针,而所需求更新的各种视图DOM便是观察者。

本文不评论观察者形式的禽流感问题,请移步:观察者形式及典型完结 一文。

以上便是 MVVM 和 其间触及的要害原理概念。另一篇 MVVM 双向数据绑定之根底完结,经过代码展现诸子门徒怎么完结 MVVM 形式。

如有协助,请多多转载!

评论(0)