angular双向绑定模拟探索

前端之家收集整理的这篇文章主要介绍了angular双向绑定模拟探索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

本次探索的demo是基于jquery写的,毕竟jquery提供了强大的选择器,用惯了就离不开它了!angular的双向绑定实在是有点精深,本次探索只实现了文本的双向绑定。

View-Model

先看效果:文本框输入内容,model层数据也同步过来了

Model-View

先看效果:js改变model层数据,视图也立即随之变化

上我的demo

<Meta charset="UTF-8"> Title

demo解读

核心其实就是js原生的defineProperty。在这之前,我们需要知道,我们在给某个对象添加获取属性方法时其实它底层是调用了set和get方法,比如obj.name="名字",这里是调用了set方法,obj.name这里是调用了get方法

因此,我们可以劫持js的这两个底层方法

Object.defineProperty(obj,attribute,{set:function(newVlaue){//dosomething},get:function(){//dosomething}}) obj是我们的model对象,attribute就是我们要劫持的需要双向绑定的name,set就是设置属性时底层调用方法,get就是获取属性时底层调用方法因为我们劫持了这两个底层方法,我们可以做我们想做的事,但是同时我们也破坏了它本身的设置和获取功能,因此我这里是把订阅者的数据都是存在一个数组里面的,我还声明了一个数组用来保存所有需要进行双向绑定的name,比较low的是我这边是写死的,实际情况下肯定是要动态获取所有需要双向绑定的name的

结言

本人小菜对前端技术很感兴趣,有大神路过给点指点,我也可以关注下各位大神的博客,希望可以学到更多的东西!!!谢谢

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

猜你在找的JavaScript相关文章