我有一个这样的表格 -
<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
有人可以解释原因吗?
由于
答案 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;
}
});