下面的代码对于执行基本的必需表单验证似乎效果很好。
当该字段是脏的+无效且为 Great 时,该表单将显示红色的 Name required 消息 。 如果该字段是脏的+有效消息。
但是,对于表单中的每个字段重复此代码是很混乱的:
<form name="myForm"> <div class="control-group" ng-class="{error: myForm.name.$invalid && myForm.name.$dirty}"> <label>Name:</label> <input type="text" name="name" ng-model="user.name" required/> <span ng-show="myForm.name.$invalid && myForm.name.$dirty" class="help-inline">Name is required</span> <span ng-show="myForm.names.$valid && myForm.names.$dirty">Great!</span> </div> </form>
我希望能够以更简单的方式指定ng-show和ng-class属性。
ng-show
ng-class
一种方法是将验证表达式抽象到范围方法:
[**PLUNKER**](http://plnkr.co/edit/DHwOl881L6AhFue9EjGA?p=preview)
<div class="control-group" ng-class="{error: isInvalid('name')}"> <label>Name:</label> <input type="text" name="name" placeholder="Name" ng-model="user.name" required/> <span ng-show="isInvalid('name')" class="help-inline">Name is required</span> <span ng-show="isValid('name')">Great!</span> </div>
function Ctrl($scope) { $scope.isInvalid = function(field){ return $scope.myForm[field].$invalid && $scope.myForm[field].$dirty; }; $scope.isValid = function(field){ return $scope.myForm[field].$valid && $scope.myForm[field].$dirty; }; }