У меня есть приложение Angular 1.x, и я могу успешно обновить DOM с помощью ng-repeat при добавлении элемента в массив в контроллере.Однако DOM не обновляется, когда я пытаюсь удалить элемент.
Вот соответствующая часть представления:
<ul class="pagination">
<span ng-click="page(left)">left arrow</span>
<li ng-repeat="i in range track by $index">
<a href="" id="current-page-{{ $index * 5 == beginning }}" ng-click="pageStep( $index )">{{ $index + 1 }}</a>
</li>
<span ng-click="page(right)">right arrow</span>
</ul>
В моем контроллере у меня есть эта переменная:
$scope.range = [1,2,3,4,5,6,7,8,9,10];
и вот моя действительная функция page ():
$scope.page = function ( direction ) {
var lastnumber = $scope.range[$scope.range.length - 1];
$scope.range.push(lastnumber + 1);
$scope.range.shift();
}
Если я удалю последнюю строку в функции, shift (), то DOM обновится соответственно.Однако, когда я добавляю shift () обратно в DOM, я не добавлю ни новый элемент, ни удалим старый.
- Я попытался добавить в $ scope. $ Apply к этой функции, которая привела кНет результатов.
- Я также попытался использовать splice (0,1) вместо shift безрезультатно.
- Наконец, я попытался удалить «track by» в ng-repeat.Опять же, это ничего не исправило.
Однако эта функция корректно обновляет объект $ scope.range, когда я печатаю в консоль, я вижу, что объект получает новый добавленный номер и первый удаленный номер.Похоже, он не обновляется в браузере.
Есть идеи?