如何用JavaScript实现双向数据绑定

近几年前端技术栈真是发展的太迅速了,从以前的针对dom操作的框架如jquery,ext.js等框架逐步过渡到当前的mvvm模式,让前端开发者将注意力从dom操作逐渐解脱出来,专注于逻辑的实现,个人认为开发效率至少提升了1倍,mvvm模式的一个核心便是数据的双向绑定。

什么是数据的双向绑定?

上面说的是在vue框架中数据双向绑定的应用,个人认为这个特性很赞,是大幅提升开发效率的关键,那如果脱离mvvm的框架,我也想实现这种数据的双向绑定,可不可以实现了,该如何实现了?

用原生js模拟数据双向绑定

实现步骤:

一:用js监听数据的变化并将变化的数据时时的同步到页面

为了实现这个功能我们需要用到js的一个方法Object.defineProperty

推荐下我的前端群:524262608,不定期会有干货分享,初学者还有一套整理好的入门教程,欢迎初学者和进阶中的小伙伴。

1.属性介绍

2.方法介绍

大概的介绍了defineProperty核心的两个方法,看到这里,你就知道可以利用这两个内置方法搞事情了,看下面利用该方法实现数据双向绑定的一个例子

效果如下,当姓名发生变化时后面的输入框中的值也同步发生变化:

小结:虽然对此属性没有太研究,但是感觉还是蛮新鲜的,之前只是用到了mvvm模式带来的便捷却不知道如何去实现,完全么有思路的说,但是小伙伴们,你们看完上述代码,现在心中的疑惑应该会少很多哈,,嘎嘎。

本文作者:佚名

来源:51CTO

时间: 2024-09-30 07:34:43

如何用JavaScript实现双向数据绑定的相关文章

Way.js —— 轻量级的 JavaScript 双向数据绑定库

Way.js 详细介绍Way.js 是一个简单轻量级.持久化的 JavaScript 库,用来绑定 DOM 元素和内存中的数据.是一个超级简单的双向数据绑定库. 示例代码: <form way-data="myFormData" way-persistent="true"> <input type="text" name="name"> <input type="text" n

轻松实现javascript数据双向绑定_javascript技巧

双向数据绑定指的是当对象的属性发生变化时能够同时改变对应的UI,反之亦然.换句话说,如果我们有一个user对象,这个对象有一个name属性,无论何时你对user.name设置了一个新值,UI也会展示这个新的值.同样的,如果UI包含一个用于数据用户名字的输入框,输入一个新值也会导致user对象的name属性发生相应的改变. 许多流行的javascript框架,像Ember.js,Angular.js或者KnockoutJS都会把双向数据绑定作为其中的主要特性来宣传.这并不意味着从头开始实现它很难,

Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)_AngularJS

我在整理javascript高级程序设计的笔记的时候看到面向对象设计那章,讲到对象属性分为数据属性和访问器属性,我们平时用的js对象90%以上都只是用到数据属性;我们向来讲解下数据属性和访问器属性到底是什么? 数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值. 访问器属性:访问器属性不包含数据值;他们包含一对getter和setter函数在读取访问器属性时,会调用getter函数,这个函数负责返回有效的值,在写入访问器属性时,会调用setter函数并传入新值. 这里介绍的重点是

实现非常简单的js双向数据绑定_javascript技巧

双向数据绑定指的就是,绑定对象属性的改变到用户界面的变化的能力,反之亦然.换种说法,如果我们有一个user对象和一个name属性,一旦我们赋了一个新值给user.name,在UI上就会显示新的姓名了.同样地,如果UI包含了一个输入用户姓名的输入框,输入一个新值就应该会使user对象的name属性做出相应的改变. 很多热门的JS框架客户端如Ember.js,Angular.js 或者KnockoutJS ,都在最新特性上刊登了双向数据绑定.这并不意味着从零实现它很难,也不是说需要这些功能的时候,采

Angular双向数据绑定的例子

Angular是一款较为出名的前端框架,它的很多特性都是相当酷的,例如:双向数据绑定.依赖注入.指令.MVC(或者说MVVM).模板(有点像handlebar).但是被讨论最多的还是双向数据绑定,其核心思想就是观察者模式(或者说发布订阅模式),本文的重点就在于讨论如何实现观察者模式,进而讨论如何实现简单的双向数据绑定. 首先我们先来看看观察者模式: 观察者模式 JavaScript是一个事件驱动型语言,观察者模式可谓随处可见,例如常用的一些onclick. attachEvent . addEv

Angular 双向数据绑定 实例教程

angular中的data-binding指的是模型models和视图views之间的自动同步.angular实现双向绑定后,会让你觉得数据模型是页面中数据唯一的真实来源.当model改变后,视图反映改变,反之亦然.通俗的说,所谓的双向数据绑定,无非就是从界面的操作能实时反映到数据,数据的变更能实时展现到界面.据各最简单的例子: <div ng-controller="CounterCtrl">    <span ng-bind="counter"

如何用javascript控制上传文件的大小?

javascript|控制|上传 如何用javascript控制上传文件的大小? --------本文讲的是用javascript和在IE下Image的一些属性如(fileSize,fileUpdatedDate)等控制上传文件的大小.   <form   name=Myform  >     <input   type=file   name=photo><br/>     <input   type=submit   value=submit></

网页页面中如何用Javascript调用Flash动画?

flash动画|javascript|网页|页面 问:网页页面中如何用Javascript调用Flash动画? 答: 在<HEADE>区加入  程序代码 <script src="js/flash.js" type="text/javascript"></script> 在调用FLASH处加入  程序代码 <script language="JavaScript" type="text/java

如何用javascript判断录入的日期是否合法

javascript|日期 如何用javascript判断录入的日期是否合法 function IsValidYear(psYear){    var sYear = new String(psYear);     if(psYear==null)    {        return false;    }     if(isNaN(psYear)==true)    {        return false;    }     if(sYear == "")    {