2015-02-24 6 views
12

У меня есть следующая таблица с 3 флажками. Я назначил каждому свою собственную модель.Множественные условия для ng-disabled

У меня есть кнопка, которую я хочу отключить, если ни одна из трех моделей флажков не установлена.

Однако я смущен, так как я должен использовать

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

, так как если любой из них были, чтобы быть правдой кнопка не должна быть отключена.

Однако напротив работали:

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

Почему?

См plnkr здесь: http://plnkr.co/edit/yURa3g0aNjDyfEvjK2D0?p=preview

ответ

17

Вы можете сделать это, чтобы достичь того, чего вы хотите: fiddle

<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> 
1

ng-disabled="true" заставит кнопку, чтобы отключить.

С mt0 || mt1 || mt2, если они верны, то выражение принимает значение true, поэтому, если оно истинно, кнопка отключена.

Вместо того, чтобы говорить «отключено, если», легче сказать «отключено когда». Вы хотите, чтобы кнопка была отключена, когда все свойства являются ложными. Вам нужно false && false && false, поэтому !mt0 && !mt1 && !mt2 имеет смысл!

+0

Только я просто изменил плункер, как указано выше, и теперь он работает в обратном порядке. – Steve

+0

@ m59 это не достигает того, что хочет OP:> У меня есть кнопка, которую я хочу отключить, если ни одна из трех моделей флажков не верна. [скрипка] (http://jsfiddle.net/8bc24nau/) – Michelangelo

+0

@ Мики это правда. Я обновил свой ответ с приличным объяснением. Я думаю, что выражение OP хорошее. Легче думать о таких выражениях, когда вы используете правильную формулировку (отключен, если vs отключен, если только). – m59

3

Очень простой ng-disable="true" означает, что вы отключите кнопку.

Теперь предположим, что все mt0, mt1, mt2 истинны

mt0 || mt1 || mt2==true 

затем отключит кнопку

даже любой из них справедливо делает выше условие истинного и отключить кнопку.

!mt0 || !mt1 || !mt2==false если все верно и не отключит кнопку.

, но любое из них true делает выше условия true и отключает кнопку.

mt0 && mt1 && mt2==true если все верно и отключит кнопку

но ни один из них ложной марки выше условия ложного и не отключить кнопку.

!mt0 && !mt1 && !mt2==false, если все верно, а не отключить кнопку

но ни один из них ложной марки выше условия ложного и отключить кнопку.

+0

Я думаю, что ваше последнее предложение неверно. См http://plnkr.co/edit/yURa3g0aNjDyfEvjK2D0?p=preview Единственный способ это работает для меня 'Кнопка <нг отключенной = "mt0 && && mt1 mt2!!"> Переназначение' – Steve

+0

oppssii СРЮ: -) Я обновил его благодаря – squiroid

0

просто написать истинным или ложным без ''

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

или

ng-disabled="variable1==true && variable2==true" 
Смежные вопросы