5

Jaki jest właściwy sposób dynamicznego dodawania lub usuwania dyrektywy z elementów skompilowanych i połączonych?AngularJS - dynamicznie usuwa dyrektywę z elementu

Mam stronę, która ma kilka wejść (lista jest dość długa, więc chcę wymyślić ogólne rozwiązanie). Chcę tylko wyłączyć wszystkie wejścia, jeśli ustawiono konkretną flagę. Mogę to zrobić za pomocą elementu element.prop jQuery ("wyłączony", prawda).

Problem takiego podejścia polega na tym, że jeśli dowolne z wejść ma załączone dyrektywy ng-disabled lub ng, to przy każdej ich modyfikacji wyrażeń zastąpi poprzednio ustawioną właściwość "wyłączoną". Ale chcę, żeby nie przesłoniły mojej globalnej flagi.

Wpadłem na pomysł, aby dodać kolejną grupę obserwatorów do wyrażenia ng-disabled lub ng, ale wydaje się, że nie jest to najlepsze podejście.

Co chcę zrobić, to usunąć większość dyrektyw dołączonych do elementu i ustawić odpowiednie atrybuty samodzielnie. Ale jeśli skompiluję i zrewiduję element, a następnie go zastąpię w dokumencie, to dostanę wycieku pamięci, ponieważ stary element zostanie usunięty z drzewa dokumentu DOM i pozostanie w pamięci. Nie mogę też zniszczyć zakresu elementu, ponieważ te elementy w zasadzie wykorzystują główny zakres całej strony.

+4

Czy próbowałeś [ngIf] (http://docs.angularjs.org/api/ng.directive:ngIf) – dohaivu

+0

Twój problem nie jest dla mnie oczywisty, ale dlaczego musisz usunąć węzły DOM, jeśli wszystko, co próbujesz zrobić, to wyłączyć je na podstawie flagi. Nie wiem też, co oznacza "globalna flaga" w twoim kontekście. – dmackerman

+0

Jestem trochę zdezorientowany co do tego, co chciałbyś zrobić z wejściami. Jeśli mają to , czy też chcesz coś, co będzie nadrzędne do wyłączenia ng-disable? – SoEzPz

Odpowiedz

0

Można spróbować czegoś podobnego

<div ng-show="someBoolean" >Some text or nested element</div> 

lub zamiast „someBoolean” można dołączyć funkcję, która postanawia wartości logicznej. Aby ustawić wartość logiczną można dołączyć ng kliknij do wejścia, który aktualizuje swój model/wartość logiczną

<button type="button" ng-click="setBoolean()">Some text or nested element </button> 

powodu angulars dwukierunkowe wiążące NG-show dane zostaną zaktualizowane po zakończeniu następnego strawić cyklu

Powiązane problemy