AngularJS 异步解决实现方法
发布时间 - 2026-01-11 01:50:43 点击率:次AngularJS 异步解决实现方法

Angular 的异步处理的真的很不错。基于消息广播的方式,并且可以向上传递,基本上解决了不同模块,不同controller之间不方便异步的问题。
场景一:通过回调函数进行异步操作(该情况下不用消息广播的机制)
这种情况的特点是直接传递一个回调函数给异步操作就可以了,等异步操作完执行回调。
比如:controller通过server异步取数据,等取完数据进行一系列的操作,这个时候就可以把操作封装到函数中,传递给异步操作函数。
controller代码片段举例如下:
$scope.submit=function(){
userService.login($scope.user.loginname.value,$scope.user.password.value,function(data){
if(data.success){
location.href = '../../views/main/index.html';
}else{
$scope.user.error.tip=data.msg;
}
});
};
最后一个参数即为回调函数
server代码片段举例如下:
return {
http:$http,
token:'',
auth:[],
loginname:'',
login:function(loginname,password,fn){
this.http({
url:'../../scripts/loginModule/services/loginOKTest.js',
method:'GET'
})
.success(function(data){
if(data[0].success){
...
//调用回调方法
fn(data[0]);
}
})
.error(function(data,header,config,status){
alert("验证服务请求失败!");
});
}
}
场景二:没有传递回调函数的地方,这个时候就必须用到消息广播的机制。
比如:我的controller通过server异步获取数据,这个时候我用回调函数保证取到数据后做后续操作。但是我的后续操作需要通过指令进行DOM的生成。这个时候我们是没有办法直接调用指令的link或者compile的。这个时候我们需要用到广播$scope.$broadcast。发送广播以后,需要通过$scope.$on进行监听。
controller代码片段举例如下:
//通过categoryService异步取数据
categoryService.initCategory(loginname,token,function(category){
$scope.category=category;
$scope.$broadcast("categoryLoaded");
});
service代码片段举例如下:
initCategory:function(loginname,token,fn){
this.http({
url:'../../scripts/mainModule/services/mainCategory.js',
method:'GET'
}).success(function(data,header,config,status){
fn(data);
}).error(function(data,header,config,status){
alert("验证服务请求失败!");
});
}
directive代码片段举例如下:
link:function ($scope, $elem, attrs) {
$scope.$on("categoryLoaded", function (event, args) {
//$scope.category即为异步获取的数据
}
}
最后,如果我们在这个controller中需要调用另外一个模块的指令的link或者compile或者另一个模块的controller怎么办。我们需要通过依赖注入$rootScope服务,因为他是所有作用域的父,然后调用$emit这个服务进行广播。指令中通过$rootScope.$on进行接收即可。
模块1(app.video)中的controller代码片段举例如下:
$scope.replay=function(id){
console.log("click replay id:"+id);
clearReply();
//通过$rootScope广播消息给app.dialog模块的controller
$rootScope.$emit("openTemplate","reply.html");
};
模块2(app.dialog)中的controller代码片段举例如下:
$rootScope.$on('openTemplate',function(event, toState, toParams, fromState, fromParams){
$scope.openTemplate(toState);
});
$scope.openTemplate = function (url) {
if(!url)
url="/ZVideo-MVC/dialog/defaultTemplate.html";
$scope.value = true;
ngDialog.open({
template: url,
className: 'ngdialog-theme-plain',
scope: $scope
});
};
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# AngularJS
# 异步
# angular
# 异步的实例
# 详解angularjs利用ui-route异步加载组件
# AngularJS出现$http异步后台无法获取请求参数问题的解决方法
# AngularJS 实现按需异步加载实例代码
# angularjs 处理多个异步请求方法汇总
# 回调
# 这个时候
# 即为
# 就可以
# 在这个
# 他是
# 我用
# 希望能
# 这种情况
# 没有办法
# 另外一个
# 谢谢大家
# 真的很不错
# 情况下
# 解决了
# 直接调用
# 就必须
# 特点是
# index
# return
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
千库网官网入口推荐 千库网设计创意平台入口
nodejs redis 发布订阅机制封装实现方法及实例代码
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
详解阿里云nginx服务器多站点的配置
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
php 三元运算符实例详细介绍
免费网站制作appp,免费制作app哪个平台好?
Linux系统命令中tree命令详解
如何用AWS免费套餐快速搭建高效网站?
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
如何在云服务器上快速搭建个人网站?
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
简单实现Android验证码
在线教育网站制作平台,山西立德教育官网?
北京的网站制作公司有哪些,哪个视频网站最好?
如何快速搭建安全的FTP站点?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
简历没回改:利用AI润色让你的文字更专业
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何为API生成Swagger或OpenAPI文档
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
高防服务器如何保障网站安全无虞?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
详解Android——蓝牙技术 带你实现终端间数据传输
制作电商网页,电商供应链怎么做?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何实现数据库事务?(DB Facade示例)
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel API资源类怎么用_Laravel API Resource数据转换
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Bootstrap整体框架之CSS12栅格系统
如何做网站制作流程,*游戏网站怎么搭建?
JavaScript Ajax实现异步通信
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
JS碰撞运动实现方法详解
Angular 表单中正确绑定输入值以确保提交与验证正常工作
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
下一篇:【Linux】进程信号的产生
下一篇:【Linux】进程信号的产生

