背景:如果表单很脏,我试图创建一个"暂停导航"指示。我已经看过几个关于SO的问题/例子,而且我把一些有些功能的东西放在一起,但不是很正确。我试图在整个Web应用程序中将此指令用作多个表单的属性。
问题:我的网页包含两个<form>
元素(&#34; form1&#34;&#34; form2&#34;)嵌套在{{{ 1}}元素。 Form2进一步嵌套在自定义元素指令中。
当任何一个表单变脏并且我尝试导航到另一个页面(UI路由器更改)时,我从我们的提示服务获得预期的自定义提示。但是,如果我尝试重新加载页面,那么当form2变脏时,我只会获得一个浏览器生成的提示。当form1变脏时没有提示。
有人可以指导我在form1变脏时如何生成浏览器提示并且有重载等窗口事件吗?
相关HTML
<tab>
相关JAVASCRIPT
<!-- "main" view -->
<tabset>
<tab heading="Heading1">
<form name="FORM1" class="form-horizontal" form-dirty>
<!-- FORM STUFF -->
</form>
</tab>
<tab heading="Heading2">
<this-contains-form2 data="objOnScope"></this-contains-form2>
</tab>
</tabset>
<!-- "thisContainsForm2" template -->
<form name="FORM2" class="form-horizontal" form-dirty>
<!-- FORM STUFF -->
</form>
答案 0 :(得分:0)
如果您使用ui bootstraps选项卡实现,您必须知道所有选项卡始终呈现,但所有非活动选项卡都设置为'display:none'
在这种情况下,两个form-dirty指令同时处于活动状态,这是一个问题,因为第二个选项卡会覆盖第一个选项卡window.onbeforeunload函数
使用jQuerys事件机制,以便能够注册多个这样的侦听器或编写自己的解决方案
如果您只是在同一页面上将两个表单放在彼此之下,则问题可能也存在 - &gt;只有第二个将在卸载前正确处理