在angularjs控制器内获取表单验证状态

时间:2014-03-02 19:30:36

标签: javascript angularjs

我可以验证我的表单元素'name'd'username'。

ng-class="{ 'has-error': form.username.$dirty && form.username.$invalid }"

但我无法在控制器中获取此信息。这可能吗?

我想做这样的事情:

mycontroller.controller('mycontroller', function ($scope){

    $scope.isusernameinvalid = $scope.form.username.$dirty && $scope.form.username.$invalid;
});

并使用isusernameinvalid(true / false)来切换类

ng-class="{ 'has-error': isusernameinvalid }"

我知道“form”不是$ scope变量,因此无法访问。

如何在此处访问验证状态/类信息?

1 个答案:

答案 0 :(得分:1)

如果你声明这样的表格

<form name="formName"></form>

您应该可以通过$scope.formName在控制器中访问它。但是,如果一直处于角度,您必须小心查看正确的范围,因此可以在表单标记上或在包含表单标记的某个标记上设置ng-controller="mycontroller"(如果尚未完成)。

也可能是当$scope.isusernameinvalid = $scope.form.username.$dirty && $scope.form.username.$invalid;代码运行时,表单尚未在范围中初始化,因此访问它会返回undefined。将isuernameinvalid声明为函数而不是应该解决这个问题:

$scope.isUsernameInvalid = function() {
    return $scope.form.username.$dirty && $scope.form.username.$invalid;
}

然后将其作为ng-class指令中的函数调用。