美文网首页
研究了下数据的双向绑定,写一个最简单的双向绑定demo

研究了下数据的双向绑定,写一个最简单的双向绑定demo

作者: 竹香书画 | 来源:发表于2018-11-28 17:32 被阅读0次

Object.defineOroperty(obj,key,describeObj)

要搞明白数据的双向绑定,必须先整明白这个方法;好玩得很!(备注:最好看文档,我这里简单的记录下就行)
第一个参数obj是:要定义属性的对象;也就是你需要定义一个对象,用来装你要存的数据,如:var obj = {name:'LANDEN'};
第二个参数是属性的名字,如这里的name;
第三个是个描述对象

{
  configurable:false,
  enumerable:false,
  value:'',
  writable:false,
  //set:function(){},
  //get:function(){}
}
// 备注:这个其实文档上也有,写这个的目的是提醒下,set和get方法不能与value或者writale共存;只可配置其中一种;其他的就不解释了,看文档;

好了,那么这个方法有什么用呢,这个方法就是实现数据双向绑定的关键方法;因为你obj对象的所有属性的改动都会触发他的set方法;
说道这里你如果会Vue就会发现,Vue里的所有数据都是在data对象里,而vue用这个方法观察着data的变化,变动了就顺便更改对应节点的数据;(提醒:一个观察者只能观察同一个对象的变化,如上你观察的obj,就只能做obj数据的双向绑定,而不是obj2等)

好了,基本介绍就这样;
上最简单实现一个数据双向绑定的demo

// html代码
<input type="text" value="" id="valID">
<p id="textID"></p>
// js 代码
var obj = {name:'模拟初始化的数据'}
testID.value = obj.name;
textID.innerText=obj.name;
// 定义观察者
Object.defineProperty(obj,name,{
  enumerable:true,
  configurable:true,
  set:function(newVal){
    testID.value = newVal;
    textID.innerText=newVal;
    return newVal;
  }
})
// 模拟数据改变从而dom上对应数据也变化
setTimeout(function(){
  obj.name="接收到新数据了"
},2000)
// 监听输入框改变值,对应的数据也跟着变化,可以观察p标签的内容看是否跟着输入框改变,这模拟dom上改变,对应的数据也改变
function datachange(){
  obj.name=testID.value;
}

// 这样两个方向的数据都可以实现互相绑定了

以上只是模拟了一个最简单的数据双向绑定;现在你可以自己封装自己方法来实现非框架环境下的数据的双向绑定了;面试叫你徒手撸一个数据双向绑定的代码也不用怕了,so easy!

相关文章

  • 研究了下数据的双向绑定,写一个最简单的双向绑定demo

    Object.defineOroperty(obj,key,describeObj) 要搞明白数据的双向绑定,必须...

  • Vue之表单双向数据绑定和组件

    三、表单双向数据绑定和组件 目录:双向数据绑定、组件 1.双向数据绑定 1)什么是双向数据绑定Vue.js是一个M...

  • Vue 中的双向数据绑定

    双向绑定 单向数据流 双向绑定 or 单向数据流 Vue 是单向数据流,不是双向绑定 Vue 的双向绑定是语法糖 ...

  • Vue2.0学习笔记v-model(6)

    v-model:绑定数据源。就是把数据绑定在特定的表单元素上,可以很容易的实现双向数据绑定。一、最简单的双向数据绑...

  • 小程序 小方法

    微信小程序input数据双向绑定 简单实现双向数据绑定--对象下的属性赋值绑定(可以自己改一元变量方式)每个页面引...

  • 02Vue.js的数据绑定

    理解Vue的双向数据绑定 Vue有一个显著的地方就是它拥有双向数据绑定功能,那么何为双向数据绑定呢?双向是指:HT...

  • vue源码探究(第六弹)

    vue源码探究(第六弹) 继续之前的,差不多到最后一part了,数据的双向绑定。 双向数据绑定 双向数据绑定是建立...

  • Vue双向数据绑定v-model

    v-model 数据双向绑定用作双向数据绑定 一、组件内部双向数据绑定 1、在实例的data中,设置content...

  • [转] DataBinding 数据绑定

    数据绑定分为单项绑定和双向绑定两种。单向绑定上,数据的流向是单方面的,只能从代码流向 UI;双向绑定的数据是双向的...

  • Vue入门(二)——数据绑定

    一、什么是双向数据绑定 双向数据绑定是Vue的核心功能之一。所谓双向数据绑定是指:HTML标签上的数据绑定到Vue...

网友评论

      本文标题:研究了下数据的双向绑定,写一个最简单的双向绑定demo

      本文链接:https://www.haomeiwen.com/subject/ywkzqqtx.html