Немедленно вызвать функцию и вызвать в $ scope

0

Я занят работой над приложением 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.

  • 1
    здесь точно такие же правила для javascript!
Теги:
iife

1 ответ

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: Вы можете прочитать об этом здесь.

  • 0
    Прочитайте мое последнее предложение моего вопроса. Я знаю, что это можно сделать таким образом, но мне было интересно, смогу ли я вызвать его непосредственно при загрузке и вызвать его позже (в моем примере через интервал)
  • 0
    Да, я вижу, у меня тоже работает. Никогда не думал о том, чтобы поставить ( перед $scope .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню