3

フォームの非読み取り専用入力が変更され、フォームが有効になるたびに、特定のアクションを実行したいと考えています。たとえば、私のフォームは次のようになります

<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ときはいつでも何かをしたいと思います。試してみましたが、うまくいきませんでした。すべてのメンバーを見るとそうですが、ばかげているように感じます。すべてのフィールドに追加すると気分は良くなりますが、それでもかなりばかげています (非 DRY)。適切な方法は何ですか?input.ainput.b$watch(input)ng-change


もう 1 つの問題は、入力が有効かどうかを調べる方法です。ボタンがあれば簡単にできる

<button ng-click="doIt()" ng-disabled="form.$invalid">

form.$invalidしかし、コントローラーにアクセスするにはどうすればよいですか(に含まれていません$scope)。

4

2 に答える 2

3

form.$invalidすることでアクセスできるはずです

$scope.form.$invalid

こちらをご覧ください: AngularJs can't access form object in controller ($scope)

フォームの変更を監視するには、次のことができるはずです。

$scope.$watchCollection('input')
于 2014-03-27T18:00:11.123 に答える
2

@dave はすでに最初の質問に答えていますが、2 番目の質問については、より洗練された解決策があります。

コントローラーで、次のようにオブジェクトを宣言しました。

$scope.forms = {};

次に、名前をそのオブジェクト内にネストする必要があります。

<form name="forms.someForm">
    ...

最後に、コントローラーで次のようなことができます。

if($scope.forms.someForm.$invalid) {
    ...
}
于 2014-09-14T19:16:18.903 に答える