Javascript 如何从AngularJS$http.get().then()获取响应
我最近开始从bootstrap3升级到bootstrap4,这也需要我从AngularJS 1.5.8升级到AngularJS 1.6.1的最低版本。我有一个简单的AngularJS/MVC应用程序,具有以下代码设置: /脚本/app.js(包含路由) /scripts/controllers.js(包含控制器、方法调用等) /scripts/services.js(包含命中C#控制器并带回数据的回调方法,或“做事”(CRUD方法) 在my controllers.js中,我有一个方法:Javascript 如何从AngularJS$http.get().then()获取响应,javascript,angularjs,Javascript,Angularjs,我最近开始从bootstrap3升级到bootstrap4,这也需要我从AngularJS 1.5.8升级到AngularJS 1.6.1的最低版本。我有一个简单的AngularJS/MVC应用程序,具有以下代码设置: /脚本/app.js(包含路由) /scripts/controllers.js(包含控制器、方法调用等) /scripts/services.js(包含命中C#控制器并带回数据的回调方法,或“做事”(CRUD方法) 在my controllers.js中,我有一个方法: fun
function init() {
api.initialIndexLoad(
function(result) {
if (result.error) {
notificationService.danger("<h5>An error occurred.</h5><h6>Details: {0}</h6>".format(result.error));
} else {
vm.dataList = result.theDataFromCSharp;
}
vm.loaded = true;
}
);
}
init();
因此,当然,在将我的库更新到AngularJS 1.6.1(实际上,我直接转到AngularJS 1.7.5)之后,我开始出现错误,过了一段时间,我发现promise语法发生了变化。因此我尝试进行更改,并将我的services.js更新为:
"use strict";
angular
.module("CustList.services", ["ngResource"])
.service("api",
function api($resource, $http, notificationService) {
function handleSuccess(response) {
return response.data;
}
function handleError(err, fn) {
if (!fn) {
notificationService.error(err);
} else {
fn(err);
}
}
return {
initialIndexLoad: function() {
$http
.get("/Customers/InitialIndexLoad")
.then(handleSuccess)
.catch(handleError);
}
};
}
);
错误消失了,我以为我已经完成了升级,直到我意识到:我实际上并没有把数据取回!我创建的新handleSuccess
方法在响应中获取数据,但是返回响应。data
没有把数据返回到controllers.js方法,所以我可以将它插入中>vm.dataList
它不会抛出错误-它只是不做任何事情。我希望您能帮助我解决这个问题!返回initialIndexLoad内部 所以
我猜就是它,可能在重构/升级过程中丢失了。返回initialIndexLoad内部 所以
我猜就是这样,可能在重构/升级过程中丢失了。服务方法需要遵守
$http
承诺
app.service("api",
function api($http, notificationService) {
function handleSuccess(response) {
return response.data;
}
function handleError(err) {
notificationService.error(err);
throw err;
}
return {
initialIndexLoad: function() {
̶$̶h̶t̶t̶p̶
return $http
.get("/Customers/InitialIndexLoad")
.then(handleSuccess)
.catch(handleError);
}
};
}
);
请注意,errorHandler
需要修改错误。否则,处理程序将把被拒绝的承诺转换为已履行的承诺
控制器需要使用。然后
和捕获
方法:
function init() {
var promise = api.initialIndexLoad();
promise.then(function(result) {
if (result.error) {
notificationService.danger("<h5>An error occurred.</h5><h6>Details: {0}</h6>".format(result.error));
} else {
vm.dataList = result.theDataFromCSharp;
}
vm.loaded = true;
}).catch(functions(err) {
console.log(err);
throw err;
});
}
函数init(){
var promise=api.initialIndexLoad();
承诺。然后(功能(结果){
if(result.error){
notificationService.danger(“发生错误。详细信息:{0}”。格式(result.error));
}否则{
vm.dataList=result.theDataFromCSharp;
}
vm.loaded=true;
}).catch(函数(错误){
控制台日志(err);
犯错误;
});
}
.then
方法返回一个新的承诺,该承诺通过successCallback
,errorCallback
的返回值来解析或拒绝(除非该值是承诺,在这种情况下,它是使用该承诺中解析的值来解析的)
有关详细信息,请参阅
- 服务方法需要遵守
$http
承诺
app.service("api",
function api($http, notificationService) {
function handleSuccess(response) {
return response.data;
}
function handleError(err) {
notificationService.error(err);
throw err;
}
return {
initialIndexLoad: function() {
̶$̶h̶t̶t̶p̶
return $http
.get("/Customers/InitialIndexLoad")
.then(handleSuccess)
.catch(handleError);
}
};
}
);
请注意,errorHandler
需要修改错误。否则,处理程序将把被拒绝的承诺转换为已履行的承诺
控制器需要使用。然后
和捕获
方法:
function init() {
var promise = api.initialIndexLoad();
promise.then(function(result) {
if (result.error) {
notificationService.danger("<h5>An error occurred.</h5><h6>Details: {0}</h6>".format(result.error));
} else {
vm.dataList = result.theDataFromCSharp;
}
vm.loaded = true;
}).catch(functions(err) {
console.log(err);
throw err;
});
}
函数init(){
var promise=api.initialIndexLoad();
承诺。然后(功能(结果){
if(result.error){
notificationService.danger(“发生错误。详细信息:{0}”。格式(result.error));
}否则{
vm.dataList=result.theDataFromCSharp;
}
vm.loaded=true;
}).catch(函数(错误){
控制台日志(err);
犯错误;
});
}
.then
方法返回一个新的承诺,该承诺通过successCallback
,errorCallback
的返回值来解析或拒绝(除非该值是承诺,在这种情况下,它是使用该承诺中解析的值来解析的)
有关详细信息,请参阅