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