承诺数据未分配给控制台变量angularJs

时间:2018-07-19 19:16:25

标签: angularjs

我在saleforce VF中使用angular,并从apex控制器获取数据。

下面是相关代码:

function Quote_Details_Ctrl($scope,quoteDetailsFactory){
            console.log('Inside Angular Controller');
            $scope.quoteData = [];
            $scope.quoteId = "{!$CurrentPage.parameters.quoteId}";
            console.log('quoteId : ' + $scope.quoteId);
            $scope.loadData = function(){
                var promise = quoteDetailsFactory.loadData($scope.quoteId);
                console.log('promise : ' ,promise);
                promise.then(function(obj){
                    $scope.quoteData = obj;
                    console.log('obj : ' ,obj);
                },[]);
            console.log('quoteData : ',$scope.quoteData);
            }
            console.log('Hi Controller ');
        $scope.loadData('quoteData2 : ',$scope.quoteData);
        }

当我在控制台中打印obj时,它会正确打印数据。但是,当我将其分配给作用域变量并管理作用域变量时,它显示为没有数据的空对象。

有人可以告诉我是否遗漏了一些东西。

谢谢

2 个答案:

答案 0 :(得分:1)

$scope.quoteData必须在promise resolve函数中访问

$scope.loadData = function(){
        var promise = quoteDetailsFactory.loadData($scope.quoteId);
        console.log('promise : ' ,promise);
        promise.then(function(obj){
            $scope.quoteData = obj;
            console.log('obj : ' ,obj);
            console.log('quoteData : ',$scope.quoteData);
        },[]);
}

答案 1 :(得分:0)

之所以发生这种情况,是因为在执行语句console.log('quoteData : ',$scope.quoteData);时,诺言还没有解决。

您可以做的是要么仅通过.then()函数访问此变量,要么可以在实现此承诺后调用另一个函数

 promise.then(function(obj){
     $scope.quoteData = obj;
     console.log('obj : ' ,obj);
     $scope.helperFunc(obj);
 },[]);

$scope.helperFunc(quoteData) {
    console.log("Here you can get the quoteData: " , quoteData)
}