2016-04-19 31 views
0

我正忙於從AngularJS應用程序獲取API數據。不過,我想知道是否有可能直接調用範圍內的函數並正常調用它。

這是我在我的控制器:

var self = this; 
$scope.refreshData = (function() { 
    $http({ 
      method: 'GET', 
      url: './test-api/testdata.php' 
     }) 
     .success(function(data) { 
      self.apiData = data; 
     }); 
    console.log('Refresh executed'); 
})(); 

$interval(function() { 
    console.log('Refresh called'); 
    $scope.refreshData(); 
}, 60000); 

這將記錄:

Refresh executed 
angular.js:13540 TypeError: $scope.refreshData is not a function 

我知道我可以將其更改爲正常功能,並與$scope.refreshData()調用它,但我只是想知道在AngularJS中是否有一種方法。

+1

它在JavaScript中的規則相同! –

回答

1

$ scope.refreshData這裏是未定義的,因爲您賦給它的值是由IIFE返回的值。爲了這個工作,你應該做到以下幾點:

var self = this; 
($scope.refreshData = function() { 
    $http({ 
      method: 'GET', 
      url: './test-api/testdata.php' 
     }) 
     .success(function(data) { 
      self.apiData = data; 
     }); 
    console.log('Refresh executed'); 
})(); 

$interval(function() { 
    $scope.refreshData(); 
    console.log('Refresh called'); 
}, 60000); 

PS:你可以閱讀更多關於它here

+0

讀我的問題的最後一句話。我知道可以這樣做,但我想知道是否可以直接調用它並稍後調用它(在我的示例中是間隔) – Patrick2607

+0

是的,我看到了,也適用於我。從來沒有想過把'('放在'$ scope'之前。 – Patrick2607