无法读取属性$ valid of undefined

时间:2015-03-16 22:47:16

标签: angularjs

我有一个这样的表格 -

<form name="myForm" novalidate>

表单中有一些字段我正在验证,然后提交这样的表单 -

<input type="button" ng-click="Save(data)" value="Save">

在控制器中,我想检查表单是否无效,然后Save()应该在页面上显示一些错误。为此,我正在建立一个这样的手表 -

$scope.$watch('myForm.$valid', function(validity) {
     if(validity == false)
        // show errors
});

但是我在运行它时总是遇到这个错误 -

Cannot read property '$valid' of undefined

有人可以解释原因吗?

由于

2 个答案:

答案 0 :(得分:2)

你刚拼错了#34; myForm&#34;在您的控制器代码中。为了消除错误,写下&#34; myform&#34;而不是&#34; myForm&#34;。

但是我希望你想要的是这样的。

$scope.Save = function(data){
    alert($scope.myform.$valid);
}

我设置jsfiddle

答案 1 :(得分:2)

在我的情况下,我将表单包装在控制器中创建的模式中,因此得到了相同的错误。我修好了:

HTML

<form name="form.editAddress" ng-submit="save()">
    <div class="form-group">
        <label for="street">Street</label>
        <input name="street" type="text" class="form-control" id="street" placeholder="Street..." ng-model="Address.Street" required ng-minlength="2" />
        <div class="error" ng-show="form.editAddress.street.$invalid">
           <!-- errors... -->
        </div>
    </div>
    <button type="submit" class="btn btn-primary" >Save address</button>
</form>

JS

angular.module("app").controller("addressController", function ($scope, $uibModal, service) {

    $scope.Address = {};
    $scope.form = {};

    $scope.save = function() {
        if (modalInstance !== null) {
            if (isValidForm()) {
                modalInstance.close($scope.Address);
            }
        }
    };

    var isValidForm = function () {
        return $scope.form.editAddress.$valid;
    }
});