web-dev-qa-db-fra.com

Plusieurs conditions pour ng-disabled

J'ai le tableau suivant avec 3 cases à cocher. J'ai assigné à chacun son propre modèle.

J'ai un bouton que je veux désactiver, sauf si l'un des 3 modèles de case à cocher est vrai.

Cependant, je suis confus puisque je m'attendais à utiliser 

<button " ng-disabled="!mt0 || !mt1 || !mt2">Reassign</button>

puisque si aucun de ceux-ci étaient vrais, le bouton ne devrait pas être désactivé.

Cependant, le opposé a fonctionné:

<button ng-disabled="!mt0 && !mt1 && !mt2">Reassign</button>

Pourquoi?

Voir plnkr ici: http://plnkr.co/edit/yURa3g0aNjDyfEvjK2D0?p=preview

12
Steve

Vous pouvez le faire pour réaliser ce que vous voulez: violon

<div ng-app>
    <input type="checkbox" ng-model="mt0">
    <input type="checkbox" ng-model="mt1">
    <input type="checkbox" ng-model="mt2">
    <button ng-disabled=" (mt0||mt1||mt2) ?  false : true">Reassign</button>
</div>
20
Michelangelo

Très simple ng-disable="true" signifie désactiver le bouton.

Supposons maintenant que tous les mt0, mt1, mt2 sont vrais

mt0 || mt1 || mt2==true

alors il va désactiver le bouton

même n'importe lequel d'entre eux true rend la condition ci-dessus vraie et désactive le bouton.

!mt0 || !mt1 || !mt2==false si tout est vrai et ne désactivera pas le bouton.

mais aucun d'entre eux true rend la condition ci-dessus vraie et désactive le bouton.

mt0 && mt1 && mt2==true si tout est vrai et désactivera le bouton

mais aucun d'entre eux false rend la condition ci-dessus fausse et ne désactive pas le bouton.

!mt0 && !mt1 && !mt2==false si tout est vrai et ne pas désactiver le bouton

mais chacun d'entre eux false rend la condition ci-dessus fausse et désactive le bouton.

4
squiroid

ng-disabled="true" entraînera la désactivation du bouton.

Avec mt0 || mt1 || mt2, si aucun est vrai, l'expression est évaluée comme étant vraie. Par conséquent, si aucun est vrai, le bouton est désactivé.

Au lieu de dire "désactivé sauf", il est plus facile de dire "désactivé quand". Vous voulez que le bouton soit désactivé quand toutes les propriétés sont fausses. Vous avez besoin de false && false && false, donc !mt0 && !mt1 && !mt2 a du sens!

1
m59

écrivez simplement vrai ou faux sans ''

ng-disabled="condition1==true && condition2==true"

ou 

ng-disabled="variable1==true && variable2==true"
0
Abdallah Okasha