簡體   English   中英

angularjs中的表單更改和有效性

[英]Form change and validity in angularjs

每當我的表單中的任何非只讀輸入發生變化且表單有效時,我都想做某些動作。 讓我們說,我的表格看起來像

<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.ainput.b有效,我就想做點什么。 我試過$watch(input) ,但它沒有用。 看着它的所有成員,但感覺很愚蠢。 ng-change添加到所有字段感覺更好,但仍然非常愚蠢(非DRY)。 什么是正確的方法?


另一個問題是如何確定輸入是否有效。 如果我有一個按鈕,我可以做到

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

但是如何訪問form.$invalid控制器中的form.$invalid (它不包含在$scope )?

您應該能夠訪問form.$invalid

$scope.form.$invalid

看到這里: AngularJs無法訪問控制器中的表單對象($ scope)

要注意表單中的更改,您應該能夠:

$scope.$watchCollection('input')

@dave已經回答了你的第一個問題,但是對於第二個問題,我有一個我認為更優雅的解決方案:

在您的控制器中,您已聲明了一個對象,例如:

$scope.forms = {};

然后你的表單名必須嵌套在該對象中:

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

最后在您的控制器中,您可以執行以下操作:

if($scope.forms.someForm.$invalid) {
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM