双向数据绑定原理

利用对象对应的址实现双向数据绑定,对象赋值是赋址而不是值,这也就是不用字符串记录这个值的原因

双向数据绑定原理

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title></title>

</head>

<body>

<input type="text" id = "userName" >

<input type="text" id = "userNameTo">

<script>

var demo = {'name':'json'}; //必须是对象

var inputObj = document.getElementById('userName');

var showObj = document.getElementById('userNameTo');

inputObj.addEventListener('input',modelToView); // 绑定事件 当输入值的时候对对象的值进行改变

var model = new Object(null);

Object.defineProperty(model,'name',{ // 对象的值进行改变的时候就会触发

  set:function(value){

  console.log("执行");

  name = value;

  showObj.value = value; // 值改变的时候进行doc操作

},

get:function(){

  return name;

  }

});

 

function modelToView(){

  console.log("执行函数");

  model['name'] = inputObj.value;

  console.log(model);

}

</script>

 

</body>

</html>