浅谈Angular 观察者模式理解


Posted in Javascript onNovember 01, 2018

观察者模式意图

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

实现过程

在老师教程中学到了 Angularjs 中的观察者模式

不使用观察者模式,登录时不实时获取当前登录用户,必须刷新界面

浅谈Angular 观察者模式理解

使用观察者模式

浅谈Angular 观察者模式理解

代码

Services:

// 观察者
    self.observerCallbacks = [];

    // 注册观察者
    self.reisterObserverCallback = function(callback){
      self.observerCallbacks.push(callback);
    };

    // 通知观察者
    self.notifyObserver = function(currentLoginTeacher){
      angular.forEach(self.observerCallbacks, function(callback){
        callback(currentLoginTeacher);
      });
    };

Controller:

// 注册观察者
          teacher.reisterObserverCallback(function(teacher){
           $scope.data.CurrentLoginTeacher = teacher;
          });
使用时调用self.notifyObserver方法。只要是注册过的观察者都会得到一个通知。

时序图

浅谈Angular 观察者模式理解

总结

观察者模式:我觉得用一个词来总结,就是群发。
当一个对象发生改变的同时,需要其他对象也改变,但是并不知道具体有多少个对象改变。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
Jul 22 Javascript
js实现不提示直接关闭网页窗口
Mar 30 Javascript
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
删除table表格行的实例讲解
Sep 21 Javascript
关于Vue单页面骨架屏实践记录
Dec 13 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
Dec 06 Javascript
详解vuex状态管理模式
Nov 01 #Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 #Javascript
Vue.js 事件修饰符的使用教程
Nov 01 #Javascript
微信小程序实现蒙版弹窗效果
Nov 01 #Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 #Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 #Javascript
微信小程序实现留言板
Oct 31 #Javascript
You might like
在IIS上安装PHP4.0正式版
2006/10/09 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
JS中用try catch对代码运行的性能影响分析
2016/12/26 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python之yield表达式学习
2014/09/02 Python
Python pickle模块用法实例
2015/04/14 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python多线程原理与用法详解
2018/08/20 Python
Python函数和模块的使用总结
2019/05/20 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
init进程的作用
2012/04/12 面试题
如何安装ruby on rails
2014/02/09 面试题
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
政风行风评议心得体会
2014/10/21 职场文书
学习保证书
2015/01/17 职场文书
2015年检验科工作总结
2015/04/27 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
教你用python控制安卓手机
2021/05/13 Python