Eu quero fazer isso:
ng-hide="!globals.isAdmin && mapping.is_default"
mas a expressão sempre avalia para false
.
Eu não quero definir uma função especial $scope
.
attributes
angularjs
expression
Paulo
fonte
fonte
false
, convém verificar esses valores. É possível que os objetos "globais" e / ou "undefined
Respostas:
Use um método de controlador se precisar executar um código JavaScript arbitrário ou se pode definir um filtro que retorne verdadeiro ou falso.
Acabei de testar (deveria ter feito isso primeiro) e algo como
ng-show="!a && b"
funcionou como esperado.fonte
ng-show
/ng-hide
aceita apenasboolean
valores.Para expressões complexas, é bom usar o controlador e o escopo para evitar complicações.
Abaixo um funcionará (não é uma expressão muito complexa)
Aqui, o elemento será mostrado na interface do usuário quando qualquer uma das duas condições retornar verdadeira (operação OR).
Assim você pode usar qualquer expressão.
fonte
Isso funcionará se você não tiver muitas expressões.
Exemplo:
ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"
Para mais expressões além desta, use um controlador.
fonte
This will work if you do not have too many expressions.
embora eu concorde que ela deva ser feita no controlador.Geralmente, tento evitar expressões com ng-show e ng-hide, pois elas foram projetadas como booleanas, não condicionais. Se eu precisar de lógica condicional e booleana, prefiro inserir a lógica condicional usando ng-if como a primeira verificação e adicionar uma verificação adicional para a lógica booleana com ng-show e ng-hide
No entanto, se você deseja usar uma condicional para ng-show ou ng-hide, aqui está um link com alguns exemplos: Exibição condicional usando ng-if, ng-show, ng-hide, ng-include, ng-switch
fonte
Algumas dessas respostas acima não funcionaram para mim, mas funcionaram. Apenas no caso de alguém ter o mesmo problema.
fonte