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 相关文章推荐
JS实现随机数生成算法示例代码
Aug 08 Javascript
JS 实现列表与多选框选择附预览动画
Oct 29 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
从0开始学Vue
Oct 27 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
原生js实现密码输入框值的显示隐藏
Jul 17 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
vue组件中传值EventBus的使用及注意事项说明
Nov 16 Javascript
jquery自定义组件实例详解
Dec 31 jQuery
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
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
详解js图片轮播效果实现原理
2015/12/17 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
在Python中表示一个对象的方法
2019/06/25 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
医学护理系毕业生求职信
2013/10/01 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
教师新年寄语
2014/04/03 职场文书
节能标语大全
2014/06/21 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL