我有一些控制器和一个函数调用来从REST WCF Web服务获取一些值:
fooBar.controller('fooCtrl',
function fooCtrl($scope, $http, $resource) {
$scope.someOnClickEvent = function () {
GetSomething('a','b','c');
}
}
);
function GetSomething($scope, $resource, a, b, c) {
var ServiceHandle = $resource('some/addr');
var serviceHandle = new ServiceHandle();
serviceHandle.a = a;
serviceHandle.b = b;
serviceHandle.c = c;
serviceHandle.$save().then(function (result) {
console.log('So response should be ready');
$scope.result = result.ValueFromService;
});
}
据我所知$save()
返回promise .then
中的promise和函数应该在服务器返回响应后立即调用。在我的情况下,它被称为imediately。
如果service返回true,我将显示一些弹出窗口,所以我需要在执行条件指令之前返回此值。
Angular的版本是1.4.9。
答案 0 :(得分:2)
我已经分析了代码及其行为,显然我错了。也许我应该删除这个问题,但我相信它可以帮助别人理解类似的问题。
实际上在来自服务器的响应之后调用.then
内的函数。可以使用Chrome的开发人员工具(即标签网络)验证它。
但是,如果在调用GetSomething函数之后我们想要访问$scope.result
,我们就会犯一个大错误。只要$scope.result
内的函数不会被执行,undefined
将为.then
。要使用从服务返回的值,我们必须在.then
函数内或在它调用的函数中执行它。