立即调用函数并调用$ scope

时间:2016-04-19 10:36:32

标签: javascript angularjs iife

我正在忙于处理从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中是否有方法。

1 个答案:

答案 0 :(得分: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