Bindonce с нг-повтором
Я использовал Bindonce
улучшить производительность ng-repeat
,
Но у меня есть одна проблема: коллекция, которая используется из ng-repeat
немного позже заполняется данными (запрос данных из API занимает некоторое время), поэтому он пуст, потому что обновление предотвращается Bindonce
,
Как я могу указать, чтобы ждать ответа от сервера, а затем сделать привязку?
Пример кода:
В контроллере у меня есть массив $scope.requests = [];
Инициализируется с фабрикой
$scope.requests = CurrentUserData.getRequests();
Я читал об обещаниях и думал, что этот код может помочь:
CurrentUserData.getRequests()
.then(function(response) {
$scope.requests = response;
});
Но я получаю ошибку
angular.js:11655 TypeError: CurrentUserData.getRequests(...). Тогда не является функцией
2 ответа
CurrentUserData.getRequests(...)
не возвращает обещание.
Если вы будете использовать код
CurrentUserData.getRequests()
.then(function(response) {
$scope.requests = response;
});
тогда линия $scope.requests = response
следует изменить на $scope.requests = response.data
Сказав, что вы можете использовать оригинальный код
$scope.myData = CurrentUserData.getRequests();
$scope.$watch(myData,
function(newVal, oldVal){
$scope.requests = newVal
});
Наиболее вероятная причина: ваша функция getRequests в CurrectUserData не возвращает обещание, она должна возвращать $http.get('/the/url/etc')