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.ui.draggable中文文档
Nov 24 Javascript
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
jquery的map与get方法详解
Nov 04 Javascript
javascript实现无缝上下滚动特效
Dec 16 Javascript
Javascript 基础---Ajax入门必看
Jul 06 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
Bootstrap CSS布局之表单
Dec 17 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
vue的全局提示框组件实例代码
Feb 26 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
Oct 08 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 01 Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 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函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
javascript折半查找详解
2015/01/26 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
jquery实现通用的内容渐显Tab选项卡效果
2015/09/07 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
基于js对象,操作属性、方法详解
2016/08/11 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
python变量不能以数字打头详解
2016/07/06 Python
浅谈Python协程
2020/06/17 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
电视节目策划方案
2014/05/16 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
员工规章制度范本
2015/08/07 职场文书