当我的angularjs应用程序中有路线更改时,我想显示一个确认弹出窗口(带有“是”和“否”按钮)。
我试过这样做。每次更改路线前都会调用此事件,但此函数不会限制用户前往其他路线,即使用户选择了“否”
$scope.$on('$locationChangeStart', function (event) {
if (vm.counterObject.myList.length > 0) {
var answer = confirm("Are you sure?")
if (answer) {
event.preventDefault();
}
}
});
有没有关于我错在哪里的建议?
3条答案
按热度按时间bqujaahr1#
假设您希望显示部分页面中的模式,如下所示
具有显示和隐藏模态的指令。
最后,当您单击一个按钮时,您希望重定向用户。
dced5bon2#
终于在我的测试angularjs应用程序中实现了这一点。这是我从ben nadel的网站改编的方法。我决定在这里粘贴整个控制器
编辑:与上一种方法不同的是此函数中的ooo(操作顺序)。问题是我没有机会回答
$digest
当我们允许$location.path()
通过。它仍在影响事件侦听器。stopWatchingLocation()
取消该侦听器,但由于事件的关联,我们必须允许angular对其进行消化。因此,从本质上讲,这使
proceedWithLocationChange
功能:首先运行此命令:
stopWatchingLocation();
然后它在我的环境中工作得很好
aoyhnmkz3#
在angularjs中,您可以使用run函数来监听
$stateChangeStart
事件并采取行动。正如其名称所指出的,它发生在转换发生之前,您可以取消或重定向到其他位置。这也可以在组件级别完成。