Как правильно использовать $ интервал в контроллере Angular 1.7 для автоматического обновления данных в представлении? - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь автоматически обновить таблицу в приложении Angular 1.6, используя:

function monitoringConfigurationCtrl($scope, $http,$interval){


    $interval($http.get('/monitoringresults').
    then(function(response) {
        $scope.monitoringResults = response.data;
    }),10000);
...
)

Я получаю эту ошибку в консоли браузера:

angular.js:13236 TypeError: f is not a function
    at r (angular.js:12053)
    at m.$eval (angular.js:16820)
    at m.$digest (angular.js:16636)
    at m.$apply (angular.js:16928)
    at angular.js:12043

HTML-представление выглядит следующим образом:

<div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                            <tr>
                                <th>Resource</th>
                                <th>Monitoring Method</th>
                                <th>Monitoring Parameters</th>
                                <th>Last Probed</th>
                                <th>Result</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr ng-repeat="result in monitoringResults">
                                <td>{{ result.monitoring_target }}</td>
                                <td>{{ result.monitoring_method }}</td>
                                <td>{{ result.monitoring_parameter }}</td>
                                <td>{{ result.date_recorded }}</td>
                                <td>{{ result.monitoring_result }}</td>
                            </tr>
                            </tbody>
                        </table>
                    </div>

Как правильно реализовать такое живое обновление с помощью Angular 1.X?

1 Ответ

0 голосов
/ 22 декабря 2018

Это похоже на синтаксическую ошибку.Проблема в том, что вы на самом деле вызываете свою функцию в параметре $interval, в отличие от передачи функции ссылка .

Если вы просто обернитевызов функции, она должна работать:

$interval(function () {
  $http.get('/monitoringresults').
    then(function(response) {
        $scope.monitoringResults = response.data;
    });
}),10000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...