AngularJS不会阻止默认表单通过$ compile提交

时间:2014-01-12 10:05:57

标签: angularjs html-form

我将表单传递给$('#some-div').append($compile($('#my-form').html())(scope)); Angular并未压制刷新该死的页面的默认表单提交行为

我相信在正常页面渲染之后,通过编译函数传递html会有所作为。有关如何让AngularJS阻止刷新提交的任何想法吗?

AngularJS默认情况下应该阻止此表单操作。 http://docs.angularjs.org/api/ng.directive:form

另外,我知道使用AngularJS操作DOM这样的坏风格,实际的应用程序是向Bootstrap popover提供HTML内容,这只是问题的一个更简单的例子。

- 更新 -

应该从sry开始这样做。 http://plnkr.co/edit/EbyN2SYG2Gs81knxPvO5?p=preview

1 个答案:

答案 0 :(得分:3)

如果未定义form属性,则角度的action指令会添加一个阻止表单提交的事件处理程序。

boostrap popover插件从DOM中分离弹出内容(您的案例中的表单)。现在当发生这种情况时,angular会删除其事件处理程序以防止内存泄漏。所以表格将被提交。

解决方案是自己阻止提交。在HTML中:

<form name="myForm" novalidate ng-submit="insert($event)">

注意$event参数。在您的代码中:

$scope.insert = function($event) {
  $event.preventDefault();

很难说你是否可以考虑这个错误。但至少应记录这种行为。

相关问题