我将表单传递给$('#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
答案 0 :(得分:3)
如果未定义form
属性,则角度的action
指令会添加一个阻止表单提交的事件处理程序。
boostrap popover插件从DOM中分离弹出内容(您的案例中的表单)。现在当发生这种情况时,angular会删除其事件处理程序以防止内存泄漏。所以表格将被提交。
解决方案是自己阻止提交。在HTML中:
<form name="myForm" novalidate ng-submit="insert($event)">
注意$event
参数。在您的代码中:
$scope.insert = function($event) {
$event.preventDefault();
很难说你是否可以考虑这个错误。但至少应记录这种行为。