2014-03-02 35 views
1

我可以驗證我的表單元素'name'''用戶名'。在angularjs控制器中獲取表單驗證狀態

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(真/假)來切換類

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

我知道 「形式」 是不是$範圍變量,因此無法訪問。

如何訪問此處的驗證狀態/類信息?

回答

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指令的功能。