使用Angularjs blockUI时,表单对象未定义

时间:2016-01-15 15:04:00

标签: angularjs blockui

我正在使用Angularjs 1.5版,我在html中指定了一个表单,如下所示:

<div class="row" ng-show="showForm">
<form class="form-horizontal" name="myForm" novalidate role="form">
</form>
</div>

在相应的控制器中,我有一个重置表单并调用pristine的函数:

$scope.myForm.$setPristine();

到现在为止一切正常。

然后我尝试使用blockUI(https://github.com/McNull/angular-block-ui) 通过将上面的div更改为:

<div class="row" ng-show="showForm" block-ui="myBlock">

所以唯一的补充是:block-ui =“myBlock”

但是,当控制器代码运行时,我得到:

TypeError:无法读取未定义的属性'$ setPristine'

调试时我发现表单对象不存在!删除block-ui =“myBlock”时,一切正常。

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

尝试以下内容:

function MyCtrl($scope, $timeout, blockUI) {

  $scope.form = {};

  $scope.submit = function() {
    var myBlockUI = blockUI.instances.get('myForm');

    $scope.form.myForm.$setPristine();
    myBlockUI.start();

    $timeout(function() {
      // Stop the block after some async operation.
      myBlockUI.stop();
    }, 3000);
  };
}

并查看:

<form name="form.myForm" novalidate ng-submit="submit()" block-ui="myForm">
  <input type="text">
    <button>
       Submit
    </button>
  </form>

我在undefined上使用$scope表单时遇到了与您相同的问题,但在SO上使用其他对象form时发现了这些技巧。 Plunk here