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用户自定义类的类名称的代码
Mar 08 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
全面解析Bootstrap表单使用方法(表单样式)
Nov 24 Javascript
JavaScript的代码编写格式规范指南
Dec 07 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
Sep 21 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
vue2.0 路由不显示router-view的解决方法
Mar 06 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
vue中路由跳转不计入history的操作
Sep 21 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的ajax框架xajax入门与试用介绍
2010/12/19 PHP
yii框架源码分析之创建controller代码
2011/06/28 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
2007/07/21 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
2016/03/07 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
Python实现修改IE注册表功能示例
2018/05/10 Python
Python实现的knn算法示例
2018/06/14 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
django框架创建应用操作示例
2019/09/26 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
HTML5标签大全
2016/11/23 HTML / CSS
求职简历中的自我评价分享
2013/12/08 职场文书
银行存款证明样本
2014/01/17 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
小学新课改心得体会
2016/01/22 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers