Я отображение данных из базы данных (с использованием Web API) на странице:
<div ng-repeat="Item in Items">
<div class="row">
<div class="col-sm-3">{{Item.Id}}</div>
<div class="col-sm-3">{{Item.Desc)}}</div>
<div class="col-sm-6">{{Item.CollectionID}}</div>
</div>
</div>
выше работает отлично, но когда я пытаюсь получать фактическое Название коллекции, Я получаю вопрос:
<div ng-repeat="Item in Items">
<div class="row">
<div class="col-sm-3">{{Item.Id}}</div>
<div class="col-sm-3">{{Item.Desc)}}</div>
<div class="col-sm-6">{{GetCollectionName(Item.CollectionID)}}</div>
</div>
</div>
здесь моя функция контроллера для получения Название коллекции:
$scope.GetCollectionName = function (CollId) {
$http.get('http://Server/App/api/GetCollName/' + CollId).
then(function (result) {
$scope.CollectionName = result.data;
return $scope.CollectionName;
});
}
является есть ли лучший способ сделать это, кроме изменения моего базового запроса?
Причина, по которой получает бесконечный цикл переваривания, потому что $ HTTP устанавливает переменную $ scope.CollectionName. Поскольку переменная $ scope изменена, она запускает обновление DOM для структурных угловых директив (ng-if, ng-repeat и т. Д.). Обновление элементов в ng-repeat затем повторное вызов GetCollectionName() для каждого элемента, который затем устанавливает $ scope, который затем запускает обновление DOM ... вы получаете смысл. Оно продолжается бесконечно. $ digest() имеет по умолчанию максимум 10 последовательных итераций, прежде чем он выйдет из строя, поэтому он не блокирует ваш браузер из-за бесконечного цикла, который является ошибкой, которую вы видите. – mhodges