写在前面:
所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更也能实时展现到界面。angular封装了双向绑定的方法,使双向绑定变得十分简单。但是在有些场景下(比如下面那个场景),不能使用angular来实现双向绑定,需要我们使用js来实现双向绑定。
需求场景:
写了一个点击事件,当点击的时候在后台赋值了,但是在页面视图上面没有显示出来,想到要使用双向绑定来实现这个功能。因为代码之前是用js和jq写的,引入angular的话,会导致之前的代码不能用。在网上参考了一篇文章之后做出来了这个功能
ps零碎知识点:楼主踩过坑了,引用angular写的话,不能再使用JQ写代码,楼主上次代码都删的差不多了,还不能使用,最后才发现是angular和JQ冲突了,所以最好不要混着使用。
实现效果:
实现效果
点击按钮的时候,在后台赋值,然后直接在页面中显示出来,在方框里面输入值,也可以实时反映到数据。
ps:文末有demo链接,可以直接复制到本地试一试
应用:
比如实现一个在后台赋值,然后界面出现一个随机的选项,谁是卧底、狼人杀这类型的。
实现原生js过程中的三个步骤:
1.需要一个UI元素和属性相互绑定的方法(核心)
2.监视属性和UI元素的变化
3.需要让所有绑定的对象和元素都能感知到变化
实现思路:
我们使用数据特性来为HTML代码进行绑定,所有被绑定在一起的JavaScript对象和DOM元素都会订阅一个PubSub对象。只要JavaScript对象或者一个HTML输入元素监听到数据的变化时,就会触发绑定到PubSub对象上的事件,从而其他绑定的对象和元素都会做出相应的变化。
代码实现部分:
html代码部分:
1 | <h1>原生js双向绑定及其应用</h1> |
上面代码中data-bind-1=”peopleName” 比较重要,其他一些乱七八糟,用来实现效果的,可以不用管。
分析一下————data-bind-1=”peopleName”:
格式:data-bind-可以更改,只能是数字=”可以更改,相当于变量名”
ps:第一个地方只能更改数字,因为创建的是对象。这里的数字可以不按照顺序,我试了999都可以。
js代码双向绑定部分
js代码是封装好了的一个方法,可以按照前面几行的方式调用,代码里面有注释。
实际上以下这段代码已经实现了双向绑定,下面还有一个应用实例,感兴趣的可以看看。文末有demo链接,可以直接复制到本地试一试。
1 | var DBind1 = new DBind( 1 ); |
原生js双向绑定应用实例:
做了一个实现像谁是卧底中,随机抽取词汇,类似的功能。
1 | function randomGroup() { |
demo地址
以上就是用原生js实现双向绑定及其应用的所有内容了,本文主要是分享给之前不知道的小伙伴们看的,或者需要此类资料的小伙伴们。
最后:如需转载,请放上原文链接并署名。码字不易,感谢支持!因为我经常看不懂别人写的分享,所以个人写文比较偏小白,写的不好之处,欢迎指点。然后就是希望看完的朋友点个喜欢,也可以关注一下我。
ps:目前待业,坐标北京,本人适应互联网快节奏,高强度,持续学习,持续成长,认真,严谨,学习积极性强。中小公司大佬求带走,邮箱:1677593011@qq.com。
掘金个人主页