Kiedy próbuje zaktualizować tablicę na ng kliknij w celu aktualizacji dyrektywy pozycje Moje NG-powtórzyć za:NG-repeat nie aktualizowane na modyfikacji tablicy
<li ng-repeat="itemL1 in mainMenuL1Arr"
ng-click="selectL2menu(itemL1.name)">
<i ng-class="getClass(itemL1.icon)"></i>
</li>
selectL2menu() zdefiniowane na sterownik jak:
$scope.selectL2menu = function selectL2menu(itemL1name){
$scope.$apply(function() {
$scope.mainMenuL2CurArr = $scope.mainMenuL2Obj[itemL1name];
});
}
Zaraz po kliknięciu na menu 1. poziom powinien ujawnić blok menu 2 poziomie z elementami korespondencyjnych (poprzez aktualizację tablicę z wartościami korespondentów, patrz poniżej). Oto blok menu 2 poziom muszę zaktualizować na kliknięcia:
<li ng-repeat="itemL2 in mainMenuL2CurArr"
class="subMenuElemBlock"
ng-class="{active: itemL2.selected}">
<a href="#">
<i ng-class="getClass(itemL2.icon)"></i>
<span>{{itemL2.name}}</span>
</a>
</li>
Podczas kliknij zdarzenie wywołane - mój tablica pomyślnie zaktualizowane. Niemniej jednak dyrektywa ng-repeat nie zaktualizowała mojego 2. poziomu menu (bazując na aktualizacji tablicy). Próbowałem z (i bez) za pomocą funkcji $ apply - ten sam wynik (chociaż użycie $ apply komunikat o błędzie pojawia się Błąd: $ apply already in progress).
Dlaczego więc moja tablica została pomyślnie zaktualizowana w przypadku kliknięcia, które nie zostało ujawnione w elemencie menu polecenia ng-repeat?
Czytałem podobne posty (link, link, link), ale nie znalazłem żadnej decyzji roboczej.
Mark, znalazłem odpowiedź [tutaj] (http://stackoverflow.com/questions/14453216/using-tame-controller-on-different-elements- to-refer-to-the-same-object) - dokładnie to, czego potrzebuję. Problem polegał na tym, że próbowałem użyć tego samego kontrolera na dwóch różnych elementach (innymi słowy użyłem ng-kontrolera o tej samej nazwie, niesłusznie próbującego współużytkować dane między dwoma elementami) - dlatego zaktualizowana tablica znajdowała się w jego własnym zasięgu. Bardzo dziękuję za poświęcenie czasu na mój problem! Dziękuję również za skrzypce! –