AngularJS - 处理MVC错误的最佳位置

时间:2015-09-23 12:44:47

标签: angularjs angularjs-controller

哪里最好处理错误处理和错误显示? E.g。

我有一个控制器:

angular.module('app')
    .controller('MyController', function ($scope) {
        $scope.form = {
            username: ''
        };

        $scope.login = function () {
            doSomething($scope.form.username);
        };
    });

与控制器绑定的视图:

<div ng-controller="MyController">
    <input ng-model="username.form" />
    <button ng-click="login()">Submit</button>
</div>

如果$scope.form.username为空,则表示错误;哪个最好处理这个?在控制器中,例如:

if ($scope.form.username == '') {
    // do something here
}

或者只是将值传递给doSomething(...)并让该函数处理空值?

其次,更新元素的最佳方法是什么(例如,突出显示输入红色或显示下面的小消息)以指示发生了错误?

1 个答案:

答案 0 :(得分:1)

您应该阅读有关角度表格验证的文章(http://www.ng-newsletter.com/posts/validations.html)。它提供了设置良好表单验证所需的一切。

在此之后,您可以对“提交”进行检查,以防止在出现验证错误时提交表单:

    $scope.signupForm = function() {
        if ($scope.signup_form.$valid) {
          // Submit as normal
        } else {
          //no submit, notify the user 
        }
    ...}

对于错误消息,当它们在视图中呈现时,您可以直接在指令中管理它们,如:

<input type="text" placeholder="Name" name="name" ng-model="signup.name"       ng-minlength=3  ng-maxlength=20 required />
       <div class="error-container" ng-show="signup_form.name.$dirty && signup_form.name.$invalid && signup_form.submitted">
        <small class="error" ng-show="signup_form.name.$error.required">
            Your name is required.
        </small>