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 相关文章推荐
jqGrid jQuery 表格插件测试代码
Aug 23 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
Feb 04 Javascript
简单的js图片轮换代码(js图片轮播)
May 06 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
Vue.2.0.5过渡效果使用技巧
Mar 16 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
Apr 20 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
Vue.js中 v-model 指令的修饰符详解
Dec 03 Javascript
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
对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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python学生管理系统代码实现
2020/04/05 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
python使用nibabel和sitk读取保存nii.gz文件实例
2020/07/01 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
python 制作简单的音乐播放器
2020/11/25 Python
营业员实习自我鉴定
2013/12/07 职场文书
大学军训感言800字
2014/02/27 职场文书
交通事故协议书范文
2014/04/16 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
解除劳动合同协议书
2014/09/17 职场文书
怎么用Python识别手势数字
2021/06/07 Python
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS