简单的双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input type="text" id="aa"/>
<span id="bb" style="border: 2px solid orange;margin-left: 20px;">{{hello}}</span>
<br>
<br>
<input type="text" id="cc"/> <script>
// 双向数据绑定的原理:属性拦截
// 属性拦截实现方式 : 使用Object.defineProperty()将对象的属性变成访问器属性。 var obj = {};
Object.defineProperty(obj, 'hello', {
enumerable: true,
configurable: true,
get: function () {
return document.getElementById('aa').value;
},
set: function (val) {
document.getElementById('bb').innerHTML = obj.hello;
document.getElementById('cc').value = obj.hello;
}
});
Object.defineProperty(obj, 'hello2', {
enumerable: true,
configurable: true,
get: function () {
return document.getElementById('cc').value;
},
set: function (val) {
document.getElementById('aa').value = obj.hello2;
document.getElementById('bb').innerHTML = obj.hello2;
}
});
document.getElementById('aa').onkeyup = function () {
obj.hello = this.value;
};
document.getElementById('cc').onkeyup = function () {
obj.hello2 = this.value;
};
obj.hello = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
obj.hello2 = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
</script>
</body>
</html>

单项数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input type="text" id="aa"/>
<span id="bb" style="border: 2px solid orange;margin-left: 20px;">{{hello}}</span> <script>
// 双向数据绑定的原理:属性拦截
// 属性拦截实现方式 : 使用Object.defineProperty()将对象的属性变成访问器属性。 var obj = {};
Object.defineProperty(obj, 'hello', {
enumerable: true,
configurable: true,
get: function () {
return document.getElementById('aa').value;
},
set: function (val) {
document.getElementById('bb').innerHTML = obj.hello;
}
}); document.getElementById('aa').onkeyup = function () {
obj.hello = this.value;
}; obj.hello = ""; //属性名必须设置为空,否则在使用插值表达式的时候直接会把插值表达式显示出来
</script>
</body>
</html>

最新文章

  1. iframe高度自适应(同域)
  2. js严格模式总结
  3. ecshop后台分页浅析
  4. JavaScript 详说事件机制之冒泡、捕获、传播、委托
  5. 七个结构模式之享元模式(Flyweight Pattern)
  6. Dynamics AX 2012 R2 RemoteApp导出项目报错
  7. php-fpm.conf 重要参数 max_children 和 request_terminate_timeout(转)
  8. linux centos5.7(32bit) oracle 10g oracle11g
  9. Oracle 11g新特性invisible index(不可见的索引)
  10. 通过select选项动态异步加载内容
  11. 举例android项目中的string.xml出现这个The character reference must end with the &#39;;&#39; delimiter.错误提示的原因及解决办法
  12. tomcat-jQ-springMVC-bootstrap
  13. keyboard splitting bug on ipad with ios 5 and 6 (Cocos2d-x)
  14. docker~大叔对术语的解释
  15. C++ STL vector详解
  16. java.lang.IllegalArgumentException异常 返回值类型的问题
  17. JS 设计模式五 -- 命令模式
  18. css解决图片拉伸问题
  19. Java 高级框架——Mybatis(一)
  20. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

热门文章

  1. [atAGC045B]01 Unbalanced
  2. C/C++ Qt 基础通用组件应用
  3. 雪花算法对System.currentTimeMillis()优化真的有用么?
  4. 城市防汛应急管理智慧 Web GIS 可视化平台
  5. 贪心/构造/DP 杂题选做Ⅱ
  6. BSA分析
  7. quota
  8. R包 tidyverse 分列
  9. cmd查看同一个局域网内电脑IP
  10. Tomcat类加载机制和JAVA类加载机制的比较