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的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
window.open关于浏览器拦截问题分析及解决方法
Feb 05 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
js使用eval解析json(js中使用json)
Jan 17 Javascript
很不错的两款Bootstrap Icon图标选择组件
Jan 28 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
May 10 Javascript
node.js操作mysql简单实例
May 25 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 Javascript
原生JS实现多个小球碰撞反弹效果示例
Jan 31 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
对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
一个用于MySQL的PHP XML类
2006/10/09 PHP
PHP的FTP学习(二)
2006/10/09 PHP
php 缓存函数代码
2008/08/27 PHP
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
在Python的Django框架中创建和使用模版
2015/07/15 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
flask入门之表单的实现
2018/07/18 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
python如何删除列为空的行
2020/07/17 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
《圆明园的毁灭》教学反思
2014/02/28 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
民事调解书范文
2015/05/20 职场文书
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫