访问器属性特性中的get和set方法来实现
一、需要实现的效果是:
当在 input 框输入内容时,input 框下方的div标签能实时显示输入的内容。此时在浏览器的控制台获取到的obj.inputText的值就是页面div标签的值。
结论:页面变,js数据发生改变
2、当在浏览器的控制台修改obj.inputText的值时,页面的div标签会显示成修改后的值。
结论:js数据变js监听input值变化,页面发生改变
二、用到的技术:主要通过ES5中的Object.defineProperty()实现,利用它的访问器属性特性中的get和set方法来实现。
三、主要步骤:
1、定义一个对象
2、利用Object.defineProperty为对象定义一个属性
3、监听输入框的oninput事件,把用户输入的值赋值给obj对象的inputText属性,调用set方法
4、inputText的属性值被修改就会触发set函数,然后在set函数中把用户在输入框输入的值赋值给div标签js监听input值变化,就可以实现数据双向绑定了
四、实现代码如下:
<pre class="kdocs-xml">`
-
-
-
- Document
-
-
-
-
- let input = document.getElementsByTagName('input')[0];
- let box = document.querySelector('#box');
- // 定义一个对象
- let obj = {};
- // 利用Object.defineProperty为obj对象定义一个inputText属性
- Object.defineProperty(obj, 'inputText', {
- get() {
- return box.innerHTML;
- },
- set(value) {
- // inputText的属性值被修改就会触发set函数,然后在set函数中把用户在输入框输入的值赋值给div标签,就可以实现数据双向绑定了
- box.innerHTML = value;
- }
- })
- // 监听输入框的oninput事件
- input.addEventListener('input', e => {
- // 把用户输入的值赋值给obj对象的inputText属性,调用set方法
- obj.inputText = e.target.value;
- });
-
-
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1563
0 评论
1.1k
发表评论
热门文章
自媒体博客Spimes主题44w 阅读
Spimes主题专为博客、自媒体、资讯类的网站设计....
Splity博客双栏主题14w 阅读
仿制主题,Typecho博客主题,昼夜双版设计,可....
vCard主题个人简历主题13w 阅读
一款个人简历主题,可以简单搭建一下,具体也比较简单....
Spzac个人资讯下载类主题12w 阅读
用于作品展示、资源下载,行业垂直性网站、个人博客,....
热评文章
自媒体博客Spimes主题423 评论
Splity博客双栏主题191 评论
Spzac个人资讯下载类主题89 评论
Splinx博客图片主题35 评论
Spzhi知识付费社区主题34 评论
三栏清新博客S_blog主题31 评论
vCard主题个人简历主题29 评论
Pure轻简主题29 评论
油腻男
2天前
感谢分享