angularJS实现不同视图同步刷新详解


Posted in Javascript onOctober 09, 2018

前言

作为angularJS框架MVC中M和V的桥梁,controller在整个angularJS的web应用中有着举足轻重的作用。

通常我们可以使用单例service的方式在不同的controller里面共享数据。比如在controller1中通过点击事件修改了service里面的值,controller2中再通过点击事件去获取service中被修改的值,即实现了一个值的传递。但是,如果在controller2中没有设置点击事件,如何实现当controller1中修改了值后,controller2自动去获取新值呢?

比如有这么一个场景,你有一个服务,服务中存储着你需要的数据。你有一个列表视图A,以及一个数据显示视图B,通过两个控制器Actl以及Bctl去分别控制这两个视图,并且Actl和Bctl有一个共同的父ctl。当你点击列表视图A中的不同列表项,数据显示视图B会同步的根据你选择的不同列表项去服务中获取相应的数据并将其显示在自己的视图界面上。

 通过$on,$broadcast,$emit方法实现不同视图界面同步刷新

angularJS提供了一整套的事件传播方法,用来在不同的控制器中传递事件以及数据。

$on用于在作用域中监控从子级或父级作用域中传播的事件以及相应的数据。

格式如下:$on(event,data);

$broadcast的作用是将事件从父级作用域传播至子级作用域,包括自己。

格式如下:$broadcast(eventName,args);

$emit的作用是将事件从子级作用域传播至父级作用域,包括自己,直至根作用域。

格式如下:$emit(eventName,args);

通过上面三个方法即能实现我们场景的需求。

方法如下:

1.在列表视图A中,使用譬如$emit('fresh',data)的形式发射一个事件,data可以是你选择的这个列表项的编号等

2.在父ctl上通过$on监听该事件,获取列表视图A传递上来的data,然后通过$broadcast向下广播事件

3.在数据显示视图B中,监听父ctl广播的事件类型,在回调函数里面使用得到的data值去service中获取相应的数据,然后使用$apply方法刷新视图。

以上这篇angularJS实现不同视图同步刷新详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js 时间间隔计算的函数(间隔天数)
Nov 15 Javascript
JS通过相同的name进行表格求和代码
Aug 18 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
基于Angularjs实现分页功能
May 30 Javascript
javascript中Date对象应用之简易日历实现
Jul 12 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
Bootstrap框架安装使用详解
Jan 21 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 Javascript
vue下载excel的实现代码后台用post方法
May 10 Javascript
vue集成chart.js的实现方法
Aug 20 Javascript
解决layui-open关闭自身窗口的问题
Sep 10 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 #Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 #Javascript
详解js模板引擎art template数组渲染的方法
Oct 09 #Javascript
angular4强制刷新视图的方法
Oct 09 #Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 #Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 #Javascript
vue router 源码概览案例分析
Oct 09 #Javascript
You might like
php UTF8 文件的签名问题
2009/10/30 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
JavaScript判断变量是否为空的自定义函数分享
2015/01/31 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
解决vue单页面应用中动态修改title问题
2019/06/09 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
详解Python中find()方法的使用
2015/05/18 Python
Python字符串格式化
2015/06/15 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
简单了解django文件下载方式
2020/02/10 Python
python不相等的两个字符串的 if 条件判断为True详解
2020/03/12 Python
用 Python 制作地球仪的方法
2020/04/24 Python
python如何求100以内的素数
2020/05/27 Python
python关于倒排列的知识点总结
2020/10/13 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
七年级历史教学反思
2014/02/05 职场文书
文秘大学生求职信
2014/02/25 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
2016年教师反腐倡廉心得体会
2016/01/13 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL