2017-07-31 35 views
0

變量$ scope.compdata我無法訪問控制器外部。提前致謝。

var compdata; 
    $scope.fetchCompanies = function() { 
    var deferred = $q.defer(); 
    Company.get({ 
     arg1 : 'list', 
     arg2 : 14 
    }, function(success) { 
     $scope.compdata = success.data; 
     deferred.resolve(success.data); //Edited here 
    }); 
    return deferred.promise; 
    }; 

    $scope.fetchCompanies() 
    .then(function(data) { // and this block 
     $scope.compdata = data; //Added 
     console.log("outside : ", $scope.compdata) //success 
    }); 

console.log("outside : ", $scope.compdata); //undefined 
+1

這是因爲異步執行的。在外部解析時,該值將是未定義的 – Vivz

+0

@bhavani您將無法訪問外部數據'$ scope.compdata',因爲您正在將其設置爲異步調用,即ajax調用。 通過訪問外部'$ scope.compdata'完全可以做什麼?請好好解釋一下這個場景。 – Rahul

回答

0

嘗試如下:聲明compdata變量 -

$scope.compdata = ''; 
+0

謝謝,已經嘗試過,但它不工作。 – Bhavani

+0

好吧...然後嘗試將現有變量分配到您的控制器中,並調用爲 - var compdata;是全局變量,所以 compdata = $ scope.compdata; console.log(「outside:」,compdata); – Ganesh

+0

@Ganesh稍後console.log會立即調用一旦控制器得到實例化,這將再次未定義,因爲服務承諾尚未解決 – Rahul

相關問題