Chcę to zrobić:
ng-hide="!globals.isAdmin && mapping.is_default"
ale wyrażenie zawsze ocenia false
.
Nie chcę definiować funkcji specjalnej $scope
.
attributes
angularjs
expression
Paweł
źródło
źródło
false
, możesz ponownie sprawdzić te wartości. Możliwe, że obiektami „globalnymi” i / lub „odwzorowującymi” sąundefined
Odpowiedzi:
Użyj metody kontrolera, jeśli chcesz uruchomić dowolny kod JavaScript lub możesz zdefiniować filtr, który zwróci wartość prawda lub fałsz.
Właśnie przetestowałem (powinienem to zrobić najpierw) i coś takiego
ng-show="!a && b"
działało zgodnie z oczekiwaniami.źródło
ng-show
/ng-hide
akceptuje tylkoboolean
wartości.W przypadku złożonych wyrażeń dobrze jest użyć kontrolera i zakresu, aby uniknąć komplikacji.
Poniżej jeden będzie działał (To nie jest bardzo złożone wyrażenie)
Tutaj element będzie wyświetlany w interfejsie użytkownika, gdy którykolwiek z dwóch warunków zwróci wartość true (operacja LUB).
W ten sposób możesz użyć dowolnych wyrażeń.
źródło
Działa to, jeśli nie masz zbyt wielu wyrażeń.
Przykład:
ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"
Aby uzyskać więcej wyrażeń niż to, użyj kontrolera.
źródło
This will work if you do not have too many expressions.
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 one zaprojektowane jako booleany, a nie warunkowe. Jeśli potrzebuję zarówno logiki warunkowej, jak i logicznej, wolę wprowadzić logikę warunkową, używając ng-if jako pierwszej kontroli, a następnie dodać dodatkowe sprawdzenie logiki logicznej za pomocą ng-show i ng-hide
Jednak jeśli chcesz użyć warunkowego dla ng-show lub ng-hide, oto link z kilkoma przykładami: Wyświetlanie warunkowe za pomocą ng-if, ng-show, ng-hide, ng-include, ng-switch
źródło
Niektóre z powyższych odpowiedzi nie działały dla mnie, ale tak się stało. Na wypadek, gdyby ktoś miał ten sam problem.
źródło