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 flash下fromCharCode和charCodeAt方法使用说明
Jan 12 Javascript
FireFox JavaScript全局Event对象
Jun 14 Javascript
Ajax+Json 级联菜单实现代码
Oct 27 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
Node.js Sequelize如何实现数据库的读写分离
Oct 23 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
Jun 11 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 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调用mysql存储过程实例分析
2014/12/29 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
canvas绘制多边形
2017/02/24 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
一步步解析Python斗牛游戏的概率
2016/02/12 Python
python Django批量导入不重复数据
2016/03/25 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
详解python的argpare和click模块小结
2019/03/31 Python
使用Python实现画一个中国地图
2019/11/23 Python
Python模块相关知识点小结
2020/03/09 Python
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
绩效管理实施方案
2014/03/19 职场文书
奠基仪式策划方案
2014/05/15 职场文书
工程项目经理任命书
2014/06/05 职场文书
学习普通话的体会
2014/11/07 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
python实现socket简单通信的示例代码
2021/04/13 Python
pytorch训练神经网络爆内存的解决方案
2021/05/22 Python
Python Pandas常用函数方法总结
2021/06/15 Python
Python中的socket网络模块介绍
2022/07/23 Python