倒计时和重定向的正确方法
Proper way to countdown and redirect
我正在使用ngRoute
模块来处理angularJS单页应用程序中的多个链接。有时用户到达错误的链接应该被重定向(因为内容是动态的,它取决于外部来源,但它不相关)。
假设我想在 10 秒后重定向用户,同时我想显示警告并显示倒计时。我只使用一个从形式 10 开始的 seconds
变量和一个秒数较低的函数$interval
直到 0,然后重定向
$scope.seconds = 10;
$scope.startCountdown = function () {
var intervalPromise = $interval(function () {
if ($scope.seconds > 0) {
$scope.seconds--;
}
else {
$interval.cancel(intervalPromise);
$location.search({});
$location.path("/");
}
}, 1000);
}
$scope.startCountdown();
它可以工作,但是当用户在倒计时结束之前更改位置时(他可以从顶部菜单调用$location.path("/Summary")
),倒计时仍然在后台进行,几秒钟后他被重定向到家。
我该如何解决这个问题?我可以使用$scope.$on("$routeChangeSuccess", function (args) { ... }
事件来取消承诺,但这样我需要保存intervalPromise
变量并...似乎太有线了!有没有更好的方法来以直接的方式实现此倒计时逻辑?
第一次使用$timeout
不$interval
为什么存储承诺似乎太连线了?当然,您需要将其存储在某个地方以便以后调用它:这是我的做法:
var promise = $timeout(function(){
// your code
promise = null;
//perform redirect
}, 10000);
$scope.$on("$routeChangeSuccess", function (args) {
if(promise != null){
$timeout.cancel(promise);
}
};
相关文章:
- AJAX不会在文件上传后重定向到网页-POST方法
- AngularJS在页面重定向上执行控制器方法
- 倒计时和重定向的正确方法
- 如何从发布方法获取数据后重定向
- 是否使用 PHP 或 JavaScript 方法来重定向页面
- 单击按钮后需要jQuery方法重定向-ASP.NET、VB.NET、jQuery、Javascript
- 什么'这是重定向不受支持的浏览器的最简单方法
- 要重定向的 SignalR 自定义方法
- 确实存在一种重定向和显示 javascript 消息的方法
- 如何使用Javascript通过“POST”方法重定向
- 在 Javascript 重定向中包含 HTTP 方法
- 页面内的Javascript重定向方法
- 单个 Javascript 方法上的两个页面重定向
- Spring MVC JSP Jquery调用控制器方法上的按钮点击后重定向错误
- 使用POST方法重定向javascript页面
- Expressjs POST方法后重定向不正确
- Window.Location.Href或重定向_self的其他方法不起作用(MVC视图)
- 如何使用post方法创建重定向链接
- 如何在jQuery中使用POST方法重定向
- AJAX DELETE方法重定向不起作用