Witam,
mam aplikację w angular.js, gdzie na początku przez ajax pobierane są dane z backendu i wrzucane do obiektu z zagnieżdżeniem:

Kod
{ 'tab1' : { id: 1, label: "Test1" } },
{ 'tab2' : { id: 2, label: "Test2" } },


Po pobraniu są one przypisywane w jednym z kontrolerów do zmiennej - tylko jedna z tych "tablic" ląduje w (moim przypadku) do $scope.selectedLinks. Jest ona wykorzystywana w widoku w polu select i ng-options:

Kod
<select name="selectedLink" id="selectedLink" ng-model="selectedLink" ng-options="link.id as link.label for link in selectedLinks" placeholder="Please Select" class="annotation-element"></select>


Jest jeszcze jeden select, który przełącza te "tablice" - wyzwala zmianę w $scope.selectedLinks i to działa ok. Zmieniam sobie pierwszy select, zmieniają mi się opcje dostępne w tym którego kod dałem wyżej.

Problem pojawia się w momencie, gdy modyfikuję te tablice dodając do nich nowy element - czy to główną, czy też $scope.selectedLinks. Po wrzutce do konsoli widzę, że pojawia się w nich element, ale widok niczego nie robi, niczego nie odświeża.

Operacja aktualizacji jest wykonywana przez funkcję w kontrolerze odpalaną przez ng-click w jednym z ukrytych buttonów, wyzwalanie przez trigger. Nieco tak dziwnie, bo aplikacja działa w iframe, pola są ustawiane przez okno-rodzica i wtedy następuje aktualizacja. Ogólnie działa wszystko ok, oprócz odświeżania tego widoku. I nie bardzo wiem czemu tak się dzieje.

Próbowałem kod dodawania / modyfikacji tablicy dodawać do $scope.$apply, ale w tym przypadku mam error mówiący o tym, że to już trwa. Użycie np. $timeout i opóźnionej aktualizacji równiez nie daje rezultatu - tablica ma nową wartość, ale widok tego "nie uznaje", nawet przy przełączaniu selectów.