Всякий раз, когда какой-либо ввод, не предназначенный только для чтения, в моей форме изменяется, и форма действительна, я хочу выполнить определенное действие. Скажем, моя форма выглядит так
<form name="form" novalidate>
<input ng-model='input.a' required/>
<input ng-model='input.b' required/>
<input value='{{output.p | number: 2}}' readonly/>
<input value='{{output.q | number: 2}}' readonly/>
</form>
Теперь при любом изменении input
я хочу что-то сделать, когда input.a
и input.b
действительны. Я пробовал $watch(input)
, но это не сработало. Наблюдение за всеми его членами делает, но это кажется глупым. Добавление ng-change
ко всем полям выглядит лучше, но все равно довольно глупо (не DRY). Как правильно?
Другой вопрос, как узнать, действителен ли ввод. Если бы у меня была кнопка, я мог бы просто
<button ng-click="doIt()" ng-disabled="form.$invalid">
но как я могу получить доступ к form.$invalid
в контроллере (он не содержится в $scope
)?