$ scope.form。$ setSubmitted不是函数

时间:2016-10-07 08:42:07

标签: javascript angularjs

我有一个带角度的表单,但是当我尝试调用$scope.myForm.$setSubmitted()时,它会崩溃。我做错了什么?

我收到此错误:

  

$ scope.myForm。$ setSubmitted不是函数

应该可以,基于docs

  

$setSubmitted();

     

将表单设置为其提交状态。

我在行中似乎也遇到了$touched的问题:

ng-if="myForm.myValue.$error.min && (myForm.myValue.$touched || myForm.$submitted)"

所以,两个问题,

  1. 为什么我不能拨打$setSubmitted()
  2. 为什么我无法从$touched
  3. 获取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;
    &#13;
    &#13;

2 个答案:

答案 0 :(得分:3)

您使用的AngularJS v1.2.23不支持$setSubmitted() AngularJS v1.2.3,仅在v1.3.0之后支持

答案 1 :(得分:0)

$scope.myForm.$setSubmitted不是函数!
此解决方案可能不是特定于此问题,但通常我们在尝试将setSubmitted分配给对象而不是函数时会出现此错误。

$scope.myForm.$setSubmitted = function(){}将解决问题。