我在我的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();
});
答案 0 :(得分:2)
不要单击控制器上的按钮。
$scope.callSubmit = function() {
$scope.submitForm();
};
文档很清楚......
请勿使用控制器:
操纵DOM - 控制器应仅包含业务逻辑。 将任何表示逻辑放入控制器会显着影响 它的可测试性。 Angular对大多数情况和指令都有数据绑定 封装手动DOM操作。
单击页面上的按钮正在操纵DOM。