Я занят работой над приложением 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.
$ 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: Вы можете прочитать об этом здесь.
(
перед $scope
.