让我说我有一个控制器内像这样的一段代码,在一个角/离子应用:如何在ionicView.leave停止脚本
$scope.$on('$ionicView.beforeEnter', function() {
setTimeout(function() {
myFunction();
}, 5000)
});
当用户离开映射到该控制器的URL在距离超时5秒之前,脚本不会停止(这是有道理的)。我的问题是:myFunction()
打开离子模式。
当用户离开页面并呈现另一个页面时。但是,当渲染另一个视图时,myFunction()将被触发,然后,将在新视图中显示前一视图中的离子模式。我在这个例子中使用了setTimeout()
,因为我的代码myFunction()
在ajax请求之后被调用(并且我无法控制响应时间)。
有没有办法阻止当前脚本在ionicView.leave事件中执行?
编辑:我发现$范围有一个属性$$断开连接设置为true,当视图离开。我是否需要检查这个值是否为真或是否在我的函数中打开或不打开模态?而且,如果我有'n'个异步函数,是否必须在我所有的'n'函数中检查这个?
编辑II:我实现了一个解决方案包装myFunction的是()A $超时内,指派其返回一个变量,然后和在ionicView.leave,取消它:所以
modaltimeout = $timeout(function() { myFunction();)};
$scope.$on('$ionicView.leave', function() {
$timeout.cancel(modaltimeout);
});
,不管是什么里面myFunction的(),承诺将被取消,并没有什么事情发生:-)
你能重现问题的[plunker(http://plnkr.co /)? – LeftyX
http://plnkr.co/edit/hGGqHyC0X6xYH66uJRyo?p=preview使用左上方的菜单。更改为“关于”然后快速切换回“主页”。警报将弹出(它也会发生在ionicModal中)。 –