chcę zrobić tak:Czy w ng-hide/ng-show można używać złożonych wyrażeń?
ng-hide="!globals.isAdmin && mapping.is_default"
ale wyrażenie zawsze false
.
Nie chcę definiować specjalnej funkcji na $scope
.
chcę zrobić tak:Czy w ng-hide/ng-show można używać złożonych wyrażeń?
ng-hide="!globals.isAdmin && mapping.is_default"
ale wyrażenie zawsze false
.
Nie chcę definiować specjalnej funkcji na $scope
.
Użyj metody kontrolera, jeśli potrzebujesz uruchomić dowolny kod JavaScript lub możesz zdefiniować filtr, który zwrócił wartość true lub false.
Właśnie przetestowałem (powinienem był zrobić to pierwszy) i coś w rodzaju ng-show="!a && b"
działało zgodnie z oczekiwaniami.
Masz rację. Problem polegał na tym, że flaga isAdmin miała typ "string", a nie "boolean". – Paul
ng-show
/ng-hide
przyjmuje tylko wartości boolean
.
Dla złożonych wyrażeń dobrze jest używać kontrolera i zakresu, aby uniknąć komplikacji.
Poniżej jeden działa (To nie jest bardzo skomplikowane wyrażenie)
ng-show="User=='admin' || User=='teacher'"
Tutaj element będzie pokazany w interfejsie, gdy którykolwiek z powrotem dwa stan prawdą (lub pracy).
W ten sposób można użyć dowolnych wyrażeń.
To zadziała, jeśli nie masz zbyt wielu wyrażeń.
przykład: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"
o więcej niż ekspresji tego zastosowania sterownika.
Nie sądzę, aby twoje oświadczenie było poprawne: 'To zadziała, jeśli nie masz zbyt wielu wyrażeń. Chociaż zgadzam się, że powinno to być zrobione w kontrolerze. –
Generalnie staram się unikać wyrażeń za pomocą ng-show i ng-hide, ponieważ zostały zaprojektowane jako wartości logiczne, a nie warunkowe. Jeśli potrzebuję zarówno logiki warunkowej, jak i logiki Boolowskiej, wolę umieścić logikę warunkową, używając ng-if jako pierwszego sprawdzenia, a następnie dodać dodatkową kontrolę logiki logicznej z ng-show i ng-ukryć
Howerver, jeśli chcesz użyć warunku dla ng-show lub ng-hide, tutaj jest link z kilkoma przykładami: Conditional Display using ng-if, ng-show, ng-hide, ng-include, ng-switch
Niektóre z powyższych odpowiedzi nie sprawdziły się, ale tak się stało. Na wypadek, gdyby ktoś inny miał ten sam problem.
ng-show="column != 'vendorid' && column !='billingMonth'"
Ta składnia działa dla mnie i często jej używam. Jeśli ocenia wartość "false", możesz dwukrotnie sprawdzić te wartości. Możliwe, że obiekty "globalne" i/lub "odwzorowujące" są "niezdefiniowane" – derrylwc
Przeczytaj mój komentarz poniżej odpowiedzi. – Paul
tylko podpowiedź - jeśli zamiast tego używasz metody kontrolera, możesz przejść przez proces sprawdzania w debugerze! –