立即调用函数并在 $scope 中调用

Immediately invoke function and call in $scope

我正忙于开发一个从 API 获取数据的 AngularJS 应用程序。但是我想知道是否有可能直接调用范围内的函数并正常调用它。

这是我控制器中的内容:

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 中是否有它的方法。

$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