我尝试使用验证制作嵌套表单。一切正常,但是当我删除其中一个嵌套表单时,验证继续使用已删除的表单。我做了jsfiddle示例http://jsfiddle.net/sokolov_stas/VAyXu/
示例运行时,表单有效。如果单击“+”按钮,将添加嵌套表单,valid 为 false。然后点击“-”按钮,valid 还是 false。
问题是:如何从验证处理中删除动态创建的表单。
我尝试使用验证制作嵌套表单。一切正常,但是当我删除其中一个嵌套表单时,验证继续使用已删除的表单。我做了jsfiddle示例http://jsfiddle.net/sokolov_stas/VAyXu/
示例运行时,表单有效。如果单击“+”按钮,将添加嵌套表单,valid 为 false。然后点击“-”按钮,valid 还是 false。
问题是:如何从验证处理中删除动态创建的表单。
好吧,一方面, a 的<form>
内部<form>
是无效的 HTML。
其次,您不应该从控制器内部进行 DOM 操作。控制器用于“业务”逻辑。请参阅此处的控制器部分
对于您正在做的事情,您可能最好使用一种形式,其中包含 ng-repeat,并向数组添加其他元素:
<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.
};
}