我有一个带角度的表单,但是当我尝试调用$scope.myForm.$setSubmitted()
时,它会崩溃。我做错了什么?
我收到此错误:
$ scope.myForm。$ setSubmitted不是函数
应该可以,基于docs。
$setSubmitted();
将表单设置为其提交状态。
我在行中似乎也遇到了$touched
的问题:
ng-if="myForm.myValue.$error.min && (myForm.myValue.$touched || myForm.$submitted)"
所以,两个问题,
$setSubmitted()
?$touched
input
标记
醇>
angular.module('myApp', []).controller('myController', ['$scope', function($scope){
var vm = this;
vm.submitTheForm = function(){
$scope.myForm.$setSubmitted();
}
}]);

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp">
<div ng-controller="myController as ctrl">
<form name="myForm" ng-submit="ctrl.submitTheForm()" >
<input type="submit" value="submit" text="foo">
<input type="number" class="" name="myValue" max="10" ng-model="foo" max="10" min="0" number="{}" placeholder="enter a number" />
<div ng-if="myForm.myValue.$error.min && (myForm.myValue.$touched || myForm.$submitted)">Must be a positive number. This should be seen if input is touched or the form is submitted.</div>
<div ng-if="myForm.myValue.$error.max && (myForm.myValue.$touched || myForm.$submitted)">Cannot be larger than 10. This should be seen if input is touched or the form is submitted.</div>
<br/>
<br/>
<tt>myForm.myValue.$valid = {{myForm.myValue.$valid}}</tt><br/>
<tt>myForm.myValue.$touched = {{myForm.myValue.$touched}}</tt><br/>
<tt>myForm.myValue.$error.min = {{myForm.myValue.$error.min}}</tt><br/>
<tt>myForm.myValue.$error = {{myForm.myValue.$error}}</tt><br/>
<tt>myForm.$valid = {{myForm.$valid}}</tt><br/>
<tt>myForm.$submitted = {{myForm.$submitted}}</tt><br/>
<tt>myForm.$error.required = {{!!myForm.$error.required}}</tt><br/>
</form>
</div>
</div>
&#13;
答案 0 :(得分:3)
您使用的AngularJS v1.2.23不支持$setSubmitted()
AngularJS v1.2.3,仅在v1.3.0之后支持
答案 1 :(得分:0)
$scope.myForm.$setSubmitted
不是函数!
此解决方案可能不是特定于此问题,但通常我们在尝试将setSubmitted
分配给对象而不是函数时会出现此错误。
$scope.myForm.$setSubmitted = function(){}
将解决问题。