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 设为首页与加入收藏兼容多浏览器代码
Jan 11 Javascript
js利用数组length属性清空和截短数组的小例子
Jan 15 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
JavaScript返回0-1之间随机数的方法
Apr 06 Javascript
JavaScript实现页面5秒后自动跳转的方法
Apr 16 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
基于vue.js实现分页查询功能
Dec 29 Javascript
npm的lock机制解析
Jun 20 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 Javascript
JavaScript 数组去重详解
Sep 15 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制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
php截取中文字符串函数实例
2015/02/23 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
一些不错的js函数ajax
2008/08/20 Javascript
简单的js分页脚本
2009/05/21 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
浅谈JavaScript数据类型
2015/03/03 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
vue实现评价星星功能
2020/06/30 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
写自荐信有哪些不宜?
2013/10/17 职场文书
教师节学生演讲稿
2014/09/03 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
兵马俑导游词
2015/02/02 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
7个关于Python的经典基础案例
2021/11/07 Python