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 相关文章推荐
JavaScript 的方法重载效果
Aug 07 Javascript
用js来解决ajax读取页面乱码
Nov 28 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
页面加载完毕后滚动条自动滚动一定位置
Feb 20 Javascript
LABjs、RequireJS、SeaJS的区别
Mar 04 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
JS实现文字向下滚动完整实例
Feb 06 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
轻松理解JavaScript之AJAX
Mar 15 Javascript
Jquery获取radio选中值实例总结
Jan 17 jQuery
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
Nov 01 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 02 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安全之register_globals的on和off的区别
2020/07/23 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
浅谈python函数之作用域(python3.5)
2017/10/27 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
园艺师求职信
2014/03/10 职场文书
项目建议书范文
2014/05/12 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
业务员岗位职责范本
2015/04/03 职场文书
2016年六一文艺汇演开幕词
2016/03/04 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
教你怎么用Python操作MySql数据库
2021/05/31 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
分享几个实用的CSS代码块
2022/06/10 HTML / CSS
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL