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 相关文章推荐
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
js获取网页高度(详细整理)
Dec 28 Javascript
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
兼容FF和IE的动态table示例自写
Oct 21 Javascript
js禁止回车提交表单的示例代码
Dec 23 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
Apr 19 Javascript
用vscode开发vue应用的方法步骤
May 06 Javascript
vue基于v-charts封装双向条形图的实现代码
Dec 09 Javascript
javascript实现倒计时提示框
Mar 02 Javascript
Canvas跟随鼠标炫彩小球的实现
Apr 11 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基础知识:类与对象(1)
2006/12/13 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
广告显示判断
2006/08/31 Javascript
JavaScript 实现??打印?理
2007/04/28 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
2020/04/13 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
写给女生的道歉信
2014/01/14 职场文书
气象学专业个人求职信
2014/03/15 职场文书
《去年的树》教学反思
2014/04/11 职场文书
村党支部换届选举方案
2014/05/02 职场文书
2014年图书室工作总结
2014/12/09 职场文书
安全生产先进个人总结
2015/02/15 职场文书
自主招生英文自荐信
2015/03/25 职场文书
航班延误投诉信
2015/07/02 职场文书
会议室管理制度范本
2015/08/06 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记