错误:$申请已在进行中

时间:2014-04-11 10:52:16

标签: angularjs angularjs-directive angular-ui

我在我的Angular UI手风琴上使用此http://plnkr.co/edit/sqXVCJ?p=preview。我已将指令属性放在锚点(在模板中)并且我已覆盖模板以删除ng-click =" isOpen =!isOpen"并用函数调用" callSubmit"替换它。所有的手风琴都加载了视图,所有视图都有形式。 callSubmit函数的目的是提交工作正常的表单,但我得到上面的错误。

我已经阅读了各种帖子,重新添加$ timeout服务(没有工作)并添加安全应用方法,这给了我递归和摘要错误。

我不确定我还能尝试什么,功能正常,但我只是不断收到错误。

!--- button
<button type="submit" class="btn btn-default hidden" id="btnSubmit_step1" ng-click="submitForm()">Trigger validation</button>

!-- function

     $scope.callSubmit = function() {

       document.getElementById('btnSubmit_step1').click();

     };

编辑:我从控制器触发按钮点击的原因是由于表单方法在另一个范围和&amp;一个不同的控制器。

因此,如果我使用rootScope中的broadCast,如下所示。我毫无问题地将广播事件发送给其他控制器。接收广播的控制器具有其范围内的形式,但是当我尝试执行该功能时,我什么也得不到,根本没有提交表单。

$$scope.callSubmit = function() {           
  //document.getElementById('btnSubmit_step1').click();
 $rootScope.$broadcast('someEvent', [1,2,3]);
};


$scope.$on('someEvent', function(event, mass) {
 $scope.submitForm();
});

1 个答案:

答案 0 :(得分:2)

不要单击控制器上的按钮。

$scope.callSubmit = function() {
   $scope.submitForm();
};

文档很清楚......

  

请勿使用控制器:

     

操纵DOM - 控制器应仅包含业务逻辑。   将任何表示逻辑放入控制器会显着影响   它的可测试性。 Angular对大多数情况和指令都有数据绑定   封装手动DOM操作。

单击页面上的按钮正在操纵DOM。