如何在angularjs中使用factory在GPS检测器函数内部使用$http.post方法时获得回调响应
how to get callback response while use $http.post method inside of GPS detector function using factory in angularjs
当gps未启用时,我尝试抛出错误模式窗口。可能启用后,它将使用$http.post调用servcie回调方法但如果没有gps功能,它可以工作并返回承诺好的如果使用GPS方法高于邮寄方法,那么我会有一些错误类似于"未捕获类型错误:无法读取的属性'then'undefined"我的代码出了什么问题。任何人都可以告诉我一些想法。
服务工厂:
.service('DataServiceFactory', function($http, $rootScope){ //dynamic $http JSON Data Passing service
return{
serviceDataReq : function(reqUrl, reqData){
cordova.plugins.diagnostic.isGpsLocationEnabled(function(enabled){
if(enabled == 1){
return $http.post(reqUrl, reqData);
}else{
$rootScope.ErrorMsg = "Please Turn On your GPS location..";
$('#ErrorModal').modal('show');
}
}, function(error){
$rootScope.ErrorMsg = "GPS location Error : "+error;
$('#ErrorModal').modal('show');
})
}
}
})
在控制器中:
DataServiceFactory.serviceDataReq($rootScope.primaryLiveServiceApiUrl, angular.toJson($scope.LoginAuthReq)).then(function(response) {
}, function(error){
});
我现在没有一个cordova示例来测试你的代码,但看看它,我会说,如果设备没有gps功能,你的服务方法就不会返回承诺。
我会这样做:
.service('DataServiceFactory', function($q, $http, $rootScope){ //dynamic $http JSON Data Passing service
return {
serviceDataReq: function(reqUrl, reqData){
var deferred = $q.defer();
cordova.plugins.diagnostic.isGpsLocationEnabled(function(enabled){
if(enabled == 1){
deferred.resolve($http.post(reqUrl, reqData));
}else{
$rootScope.loaded = false;
$rootScope.ErrorMsg = "Please Turn On your GPS location..";
$('#ErrorModal').modal('show');
deferred.reject("Please Turn On your GPS location..");
}
}, function(error){
$rootScope.ErrorMsg = "GPS location Error : "+error;
$('#ErrorModal').modal('show');
deferred.reject("GPS location Error : "+error);
});
return deferred.promise;
}
};
})
相关文章:
- 如何使用post方法从方法上传文件
- AJAX不会在文件上传后重定向到网页-POST方法
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 使用Ajax的问题's发送多个值的Post方法
- 使用javascript ajax post方法的未定义偏移PHP错误
- 如何使用get或post方法连接和执行ajax
- jQuery/Ajax-试图通过Ajax创建POST方法并获得对HTML的响应
- 如何在不更改URL的情况下使用HTTP方法POST
- HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
- 对象 #<传入消息> 没有方法“post”
- Jquery Ajax 方法 POST 在远程服务器上不起作用
- 方法POST,状态(已取消)错误消息
- 方法POST在向REST服务发送请求时不起作用
- 如何修复这个js脚本发送一个值的方法post
- 表单方法post和jquery
- 当我想用方法post(javascript)重定向到动作时,控制器方法不重定向并返回到上一页,为什么
- 如何获取POST方法“$.POST()”的结果
- 如何通过Jquery中的方法post传递数组和参数
- 覆盖jQuery方法$.POST
- Extjs4:使用方法 POST 的树存储