2016-04-15 9 views
1

です。 私は動的に内部形式の妥当性をチェックする方法を提案してください私は以下しようとしたが、それは

for(i=0;i<users.length;i++) 
{ 
var innerformName="innerform_idx_"+i; 
    if($scope.mainform.innerformName.$valid) 
    { 
    // throwing undefined error. 
    } 
} 

が機能していません。

ありがとう、

+3

は '$ scope.mainform [innerformName] $ valid'をお試しください – Ankh

答えて

0

私の経験では、内部フォームの動的名の生成はうまくいきません。しかし、同じ(静的な)名前を持つ複数の内部フォームを持つと、角度が完全にうまくいくように見えます。

コントローラ内での内部フォームを検証する場合は、内部フォームの有効性をビューのパラメータとしてコントローラに渡すことができます。

子フォームのいずれかが無効な場合、親フォームが無効になることも知っておくことも重要です。これは、すべて内部フォームを同時に検証するために使用できます。

実証するためのコードスニペット:。

var app = angular.module('myapp', []); 
 
app.controller('myctrl', function($scope) { 
 
    $scope.users = ['u1', 'u2', 'u3']; 
 
    $scope.validateForm = function(form) { 
 
    alert('form is valid: ' + form.$valid); 
 
    } 
 
});
.userform { 
 
    margin-bottom: 20px; 
 
} 
 
.invalid { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myapp" ng-controller="myctrl"> 
 
    <div ng-form="parentform"> 
 
    <div class="userform" ng-repeat="user in users" ng-form="innerform"> 
 
     <div>Username (maximum 5 characters): {{user}}</div> 
 
     <input ng-maxlength="5" ng-model="user" /> 
 
     <div ng-class="{'invalid': !innerform.$valid}">inner form is valid: {{innerform.$valid}}</div> 
 
     <button ng-click="validateForm(innerform)">Check my validy in the controller</button> 
 
    </div> 
 
    <div ng-class="{'invalid': !parentform.$valid}">Parent form is valid: {{parentform.$valid}}</div> 
 
    </div> 
 
</div>

関連する問題

 関連する問題