解决angularjs中同步执行http请求的方法
如下所示:
self.tableParams = new NgTableParams({}, {
getData: function (params) {
$http.post("rest/staff/page", $scope.req).success(function (data) {
if (data != null && data != undefined) {
$scope.staffs = data.data;
params.total($scope.totalPage);
}
}).error(function (data) {
$("#serverErrorModal").modal({show: true});
});
return $scope.staffs;
}
});
上面这个示例中,getData方法要得到通过$http请求返回的值,然而在angularjs中$http永远都是异步的,也就是说return的值将一直为空;
网上的例子都是通过$q,promise来实现,我试了但是不行,应该是我自己的问题
然后突然想到$http本身就返回一个promise对象,何不直接使用?!代码如下
self.tableParams = new NgTableParams({'count': 10} , {
getData: function (params) {
var promise = $http.post("rest/staff/page", $scope.req);
return promise.then(function (resut) {
var response = resut.data;
var total = response.otherData[0];
params.total(total);
return response.data;
});
}
});
直接这样return就可以实现同步获取数据了~
以上这篇解决angularjs中同步执行http请求的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
详解封装基础的angular4的request请求方法
为什么要封装呢? angular4自身提供的请求方法是用Observable来实现的.用的是观察者模式,个人认为这用来写请求是非常方便的. 一个项目里会有非常多的不同的请求,但是其实每个请求都会有些共性.比如:每个请求都要传Authorization,比如每个请求都要先判断后台返回的status字段为200时才是请求成功,后台正真返回的数据在data字段里,比如对于错误信息的处理都是一样的......等等. 所以我们需要封装出一个请求,去统一处理这些问题,从而保证组件里调用请求方法的时候收到的值
-
angularjs 处理多个异步请求方法汇总
在实际业务中经常需要等待几个请求完成后再进行下一步操作.但angularjs中$http不支持同步的请求. 解决方法一: 复制代码 代码如下: $http.get('url1').success(function (d1) { $http.get('url2').success(function (d2) { //处理逻辑 }); }); 解决方法二: then中的方法会按顺序执行. 复制代码 代码如下: var app = ang
-
Angular服务Request异步请求的实例讲解
首先这里我简单写个例子来方便您的理解 var request = { post: function() { var errorCallback = { error: function(f) { this.fun = f; }, fun: function(data) {} }; successCallback = { success: function(f) { return this.fun = f, console.log(this.fun), errorCallback; }, fun:
-
解决angularjs中同步执行http请求的方法
如下所示: self.tableParams = new NgTableParams({}, { getData: function (params) { $http.post("rest/staff/page", $scope.req).success(function (data) { if (data != null && data != undefined) { $scope.staffs = data.data; params.total($scope.tot
-
Angularjs中$http以post请求通过消息体传递参数的实现方法
本文实例讲述了Angularjs中$http以post请求通过消息体传递参数的方法.分享给大家供大家参考,具体如下: Angularjs中,$http以post在消息体中传递参数,需要做以下修改,以确保消息体传递参数的正确性. 一.在声明应用的时候进行设置: var httpPost = function($httpProvider) { /******************************************* 说明:$http的post提交时,纠正消息体 ***********
-
解决vue2中使用axios http请求出现的问题
使用axios处理post请求时,出现的问题解决 默认情况下: axios.post(url, params).then(res => res.data); 当url是远程接口链接时,会报404的错误: Uncaught (in promise) Error: Request failed with status code 404 我们需要实例化一个新的axios,并且设置他的消息头为'content-type': 'application/x-www-form-urlencoded' 于是得出
-
解决layui中table异步数据请求不支持自定义返回数据格式的问题
使用版本 layui-v2.3.0 修改: 打开layui中table.js源码 在 Class.prototype.pullData 这个方法定义内部 //获得数据 Class.prototype.pullData = function(curr, loadIndex){ var that = this ,options = that.config ,request = options.request ,response = options.response ,sort = function(
-
解决angularJS中input标签的ng-change事件无效问题
出现这个问题是因为input的type是file,这时如果用ng-change="()"是无效的. 解决方法:用onchange事件. <input onchange="angular.element(this).scope().change()" type="file"> $scope.change= function () { } 以上这篇解决angularJS中input标签的ng-change事件无效问题就是小编分享给大家的全
-
AngularJS中ng-options实现下拉列表的数据绑定方法
下拉列表的简单使用 ng-option指令使用很简单,只需要绑定两个属性: 一个是ng-model用于获取选定的值: 另一个是ng-options用于确定下拉列表的元素数组. <select ng-model="engineer.currentActivity" class="form-control" ng-options="act for act in activities"></select> 上面这条语句就是把选择
-
jQuery解决添加元素后不执行原有事件的方法
我们先来看下我的错误代码 html: <table border="1" id="best"> <tr> <td> <button class="change">修改</button> </td> </tr> <tr> <td> <button class="del">删除</button> &l
-
利用Angularjs中模块ui-route管理状态的方法
ui-router 的工作原理非常类似于 Angular 的路由控制器,但它只关注状态. 在应用程序的整个用户界面和导航中,一个状态对应于一个页面位置 通过定义controller.template和view等属性,来定义指定位置的用户界面和界面行为 通过嵌套的方式来解决页面中的一些重复出现的部位 最简单的形式 模板可以通过下面这种最简单的方式来指定 <!-- in index.html --> <body ng-controller="MainCtrl"> &
-
解决FastJson中"$ref重复引用"的问题方法
解决FastJson中"$ref重复引用"的问题,先来看一个例子吧: public static void main(String[] args) { UserGroup userGroup = new UserGroup().setName("UserGroup"); User user = new User("User"); for (int i = 0; i < 3; i++) { userGroup.addUser(user); }
-
Spring Boot中自动执行sql脚本的方法实例
目录 背景 实现核心 实现方法 注意 总结 说明:所有的代码基于SpringBoot 2.0.3版本 背景 在应用程序启动后,可以自动执行建库.建表等SQL脚本.下文中以要自动化执行people.sql脚本为例说明,脚本在SpringBoot工程中的路径为:classpath:people.sql,脚本的具体内容如下: CREATE TABLE IF NOT EXISTS people( persion_id BIGINT NOT NULL AUTO_INCREMENT, first_name
随机推荐
- Win7的IIS7中ASP获得的系统日期格式为斜杠的解决办法
- 基于jquery编写分页插件
- Vuex之理解Store的用法
- Android事件的分发机制详解
- Java中的动态和静态编译实例详解
- 基于jquery的一个浮动框(扩展性比较好 )
- ASP.NET GridView中文本内容无法换行(自动换行/正常换行)
- IIS处理Asp.net请求和Asp.net页面生命周期详细说明
- PHP实现单例模式最安全的做法
- 在Form_Load里面调用Focus无效的解决方法
- 实例讲解iOS应用的设计模式开发中的Visitor访问者模式
- Java中String类(字符串操作)的10个常见问题和解决方法
- C#中Response.Write常见问题汇总
- Nginx负载均衡详细介绍
- 微信小程序 LOL 英雄介绍开发实例
- IIS 配置问题 一些iis常见问题的解决方法
- Android开发自学笔记(六):声明权限和Activity
- dom4j读取XML文件详解
- Linux rpm tar 操作系统下软件的安装与卸载方法
- 详解如何在vue项目中使用lodop打印插件
