立即调用函数并在 $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。
我正忙于开发一个从 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。