我有一个网络应用程序,我的应用程序的前端使用角度js。我在角度js控制器中有一个方法,只需单击一个按钮即可调用。在该方法中,我调用angular服务向Java控制器发送请求。逻辑看起来像这样
var submitted= true;
submitted= sampleService.sampleMethod(sampleParam);
alert(submitted);
if(!submitted){
//some action
}
如果请求成功,服务将返回true,如果失败则返回false。 我遇到的问题是我在发送请求之前收到警报(警报显示未定义)。因此,无论响应如何,if条件都会失败。
这个问题有解决方案吗?
编辑:
样本方法
this.sampleMethod = function (sampleServiceMethod, obj){
var modalInstance = $modal.open({
templateUrl: 'example.html',
controller: 'anotherController',
resolve: {
modalServiceMethod: function () {
return sampleServiceMethod;
}
}
});
modalInstance.result.then(function (modalServiceMethod) {
modalServiceMethod(obj).then(function(response){
$window.location = response.sampleUrl;
}, function(err) {
$log.error("error occured", err);
});
}, function () {
$log.debug('error on: ' + new Date());
}).finally(function() {
return false;
});
};
基本上,如果请求成功,页面将被重定向。但是我在失败时需要返回false值进行必要的更改。
答案 0 :(得分:1)
**更新#1 ** 如果你组织和重命名代码,我可以帮助更好。当它们没有任何意义时,很难跟上所有的名字。
首先尝试在modalInstance ::
之前添加此return语句return modalInstance.result.then(function (modalServiceMethod) {
modalServiceMethod(obj).then(function(response){
$window.location = response.sampleUrl;
}, function(err) {
$log.error("error occured", err);
});
}, function () {
$log.debug('error on: ' + new Date());
}).finally(function() {
return false;
});
**原始答案**
为什么声明提交为true然后在其上运行运行函数?
看起来像这个功能:
sampleService.sampleMethod(sampleParam);
返回undefined。
添加该功能的代码,以便我们查看。
如果该函数向服务器发送请求以获取数据,则它将作为promise返回。在这种情况下,您的代码应该是:
sampleService.sampleMethod(sampleParam).then(function(response){
submitted = response.data;
conole.log(submitted)
});
但是你在警报而不是promise对象中未定义的事实表明你可能错过了sampleService.sampleMethod(sampleParam)方法中的“return”语句。该方法应如下所示:
function sampleMethod(param) {
return $http.get('url', param)
}