【发布时间】:2017-09-01 04:10:25
【问题描述】:
调用服务后我的变量没有值。我将success函数定义为一个单独的函数,并在.then()方法中调用,代码如下:
// Code inside the Ctrl:
var successData = null;
vm.fillVar = null;
vm.loadData = loadData;
// service func
function loadData() {
return $timeout(function () {
vm.fillVar = vm.fillVar || [];
if (vm.fillVar == undefined || vm.fillVar.length == 0) {
CrudSvc.GetAllData().$promise.then(success, error);
console.log('Success Variable: ', successData); //--> here, the successData variable contains no data
vm.fillVar = successData;
console.log('fillVar for the view: ', vm.fillVar); //--> fillVar is empty, why??
}
}, 500);
}
// success func
function success(res) {
console.log('var res: ', res); //--> res contains data
successData = res;
console.log('success func: ', successData); //--> the variable contains data
}
不明白为什么调用success函数后successData变量为空。这有点令人困惑......有没有人解决这个问题?
【问题讨论】:
-
你能贴出 CrudSvc.GetAllData() 的代码
-
为什么不直接在
function success中设置vm.fillVar并避免使用successData变量 -
您期望在异步调用之外同步执行。希望你了解核心JS
-
@sand 因为我想将
success-方法也用于同一控制器中的其他服务,所以最好阅读。 -
@yuro 检查我的答案,它应该适合你
标签: javascript angularjs angularjs-scope angularjs-service