1

検証でネストされたフォームを作成しようとしています。すべて正常に動作しますが、ネストされたフォームの 1 つを削除すると、検証は引き続き削除されたフォームを使用します。jsfiddle の例を作成しましたhttp://jsfiddle.net/sokolov_stas/VAyXu/

サンプルを実行すると、フォームが有効になります。「+」ボタンをクリックすると、ネストされたフォームが追加され、valid が false になります。次に「-」ボタンをクリックすると、valid が false になります。

問題は、検証処理から動的に作成されたフォームを削除する方法です。

4

1 に答える 1

0

一つには、aの<form>内部は<form>有効なHTMLではありません

次に、コントローラーの内部からDOM操作を行うことは想定されていません。コントローラは「ビジネス」ロジック用です。こちらのコントローラーに関するセクションを参照してください

あなたがしていることについては、おそらく、その中にng-repeatを含む1つのフォームを使用し、配列に要素を追加する方がよいでしょう。

<form name="myForm" ng-controller="FormCtrl" ng-submit="doSomething()">
   <div ng-repeat="item in items">
      <input ng-model="item" type="text" required/>
   </div>
   <a ng-click="addItem()">+</a>
   <a ng-click="removeItem()">-</a>
   <button type="submit">Submit</button>
   <div>Form valid: {{myForm.$valid}}</div>
</form>

およびコントローラー:

function FormCtrl($scope) {
   $scope.items = [];
   $scope.addItem = function() { 
       $scope.items.push(null);
   };
   $scope.removeItem = function() {
       $scope.items.pop();
   };
   $scope.doSomething = function () {
       //your submission stuff goes here.
   };
}
于 2012-10-17T18:47:59.887 に答える