AngularJS中的自定义把手助手

时间:2015-03-04 01:59:58

标签: javascript angularjs handlebars.js

我有一个广泛的Web应用程序表单,我注意到很多输入和验证信息都会重复。有没有办法减少这种情况并注册车把辅助方法?例如,我宁愿稍微删掉这段代码:

<span class="form-control-error" ng-show="personalForm.first_name.$invalid && !personalForm.first_name.$pristine || submitted && personalForm.first_name.$invalid">
   <span ng-show="personalForm.first_name.$error.required">First Name is required</span>
</span>

1 个答案:

答案 0 :(得分:0)

有一个角度指令,非常适合这个:ngMessages - https://docs.angularjs.org/api/ngMessages

这相当于您当前的代码:

<span class="form-control-error" ng-show="shouldShowFormErrors(personalForm.first_name)" ng-messages="personalForm.first_name.$errors">
   <span ng-message="required">First Name is required</span>
</span>

向控制器添加一个功能,如下所示:

$scope.shouldShowFormErrors = function(formElement){
    return $scope.submitted || formElement.$pristine;
};

要减少更多标记,您可以使用带有ngMessages的模板,但除非您可以使用通用错误消息(示例中的那个特定于该字段),这是不合适的。

如果您真的想要减少代码,可以制定一个指令,使用个性化消息创建ngMessages span标记。取决于你想要走多远。

我还建议使用$ touching属性而不是$ pristine属性。在这种情况下,我更喜欢它的行为。