2015-05-04 2 views
1

У меня есть форма AngularJs, где я хочу знать количество отработанных часов. Если сумма 0, я хочу включить дополнительный вопрос по причине неработоспособности.Как включить поле ввода на основе другого значения входного поля в AngularJs

<label>How many hours did you work?</label> 
<input ng-model="hours" type="number" placeholder="8" /> 

<label ng-class="{'disabled-label': ifHoursZero}">Why didn't you work at all?</label> 
<input ng-disabled="ifHoursZero" ng-model="reason" type="text" /> 

Что такое элегантный Угловой способ переключения CSS и поля ввода с ifHoursZero, если значением hours является 0. Можно ли это сделать непосредственно с переменной hours с некоторым шаблоном?

+0

вы можете использовать '' 'ng-show''' и' '' ng-hide''' –

ответ

2

Сделать ifHoursZero функция, которая возвращает логическое значение и называют его как ng-disabled="ifHoursZero()"

Например:

function ifHoursZero() { 
    return $scope.hours === 0; 
} 

См jsBin

3

Вы должны быть в состоянии сделать это без того, чтобы добавить функцию к контроллеру:

<label>How many hours did you work?</label> 
<input ng-model="hours" type="number" placeholder="8" /> 

<div ng-show="hours === 0"> 
    <label>Why didn't you work at all?</label> 
    <input ng-model="reason" type="text" /> 
</div> 
+0

Переменная 'reason' связывается вообще, если ng-show скрывает ее? И что, если он показывает это (вводя 0), а затем снова скрывает его (путем ввода> 0)? Оказывает ли это влияние на его значения по умолчанию? – Pekka

+0

@Pekka он должен быть там скрытым или нет .. (введите 0 часов, введите что-нибудь, измените часы на 1, причина все равно должна быть там). Таким образом, в вашем контроллере вы можете проверить часы в зависимости от того, что вы делаете по причине , –

Смежные вопросы