Я пытаюсь работать с angularjs , и мне дано JSFiddle за то, что я пытаюсь сделать
<div id="page-main-body">
<div id="container" ng-repeat="hero in heroModel">
<div id="page-header" ng-if="heroCounter === 1">
I am header
</div>
<div id="page-body">
<p>Name: {{ hero.Name }}</p>
<p>Super hero identity: {{ hero.SuperHeroName }}</p>
</div>
<div id="page-footer" ng-if="heroCounter === 2">
I am footer
</div>
{{ incrementHeroCounter() }} {{ resetHeroCounter() }}
</div>
</div>
Моя проблема в том, что если моя модель содержит 4 элемента, она работает нормально,но если я удаляю один элемент из модели, я не вижу div нижнего колонтитула и получаю сообщение об ошибке в консоли, в котором говорится, что
10 $ digest () достигнуты итерации.Aborting!Наблюдатели сработали за последние 5 итераций:
Так что я думаю, это потому, что я обновляю переменную $ scope и на основе значения переменной я рисую свой верхний и нижний колонтитулы.
Все работает нормально, если моя модель данных содержит 4 или 6 элементов, но если я изменяю количество элементов с четного (2,4) на нечетное (1,3), я получаю $digest
error
Я также прочитал документацию angular для этой ошибки , но похоже, что моя модель тоже остается прежней и ничего не меняется, единственной изменяемой переменной является переменная $ scope счетчика, и я знаю, что это может вызвать изменение вцикл дайджеста, но как мне его кешировать или использовать другую технику, чтобы добиться того, что я пытаюсь сделать здесь
Я пробовал пару предыдущих стековых ссылок , но не смог найти правильное направлениеИсходя из этого, я не уверен, что для такой простой вещи я должен использовать service
или $rootScope
, может быть, есть лучший способ сделать это.
Ниже приведен пример того, как мой код выглядитКак будто вы также можете посмотреть на скрипку и сообщить мне, что я здесь делаю не так
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.heroCounter = 1;
$scope.incrementHeroCounter = function() {
$scope.heroCounter++;
};
$scope.resetHeroCounter = function() {
if ($scope.heroCounter === 3) {
$scope.heroCounter = 1;
}
};
$scope.heroModel = [
{
SuperHeroName: "Superman",
Name: "Clark kent"
},
{
SuperHeroName: "Batman",
Name: "Bruce Wyane"
},
{
SuperHeroName: "Iron man",
Name: "Tony Stark"
},
{
SuperHeroName: "Shazam",
Name: "Billy Batson"
}
];
});