我尝试使用以下代码阻止导航到某个网址
run(['$rootScope', '$location', function ($rootScope,$location) {
$rootScope.$on('$locationChangeStart', function (event, next, current) {
if (next) {
if (isProhibetedUrl(next)) {
event.preventDefault();
}
}
});
但它不起作用,我输入了10个摘要的循环。我也试过$ routeChangeStart也没有成功。
答案 0 :(得分:0)
这是我如何使用$ routeStartChange。这是在您定义模块之后。
app.run(['$rootScope', '$location',function ($rootScope, $location) {
$rootScope.$on('$routeChangeStart', function (event) {
if (!permitted) { // your check
event.preventDefault();
}
});
另外一定要确保' angular-route.js'包含在你的html中,并在模块定义中注入依赖。
var app = angular.module('myapp', ['ngRoute',.....
答案 1 :(得分:0)
它完美无缺。请参考下面的plunkr。尝试将相同的内容应用于您的代码。
Plunkr: here
所以,只是一些问题,如果条件满足就进入if条件,你可以做一个console.log并检查条件。如果没有,那么尝试发布一个JSfiddle或Plunkr只是要解决的问题,它将很容易调试。感谢。
<强>代码:强>
app.run(function($rootScope, $location) {
//when the route is changed scroll to the proper element.
$rootScope.$on("$locationChangeStart", function(event, next, current) {
console.log(event);
console.log(next);
console.log(current);
if(next.indexOf("two") !== -1){
console.log("preventing default");
event.preventDefault();
}
});
});
<强>解释强>
检查下一个路由是否存在关键字two
,如果存在,则该事件将从传播中停止。如果输入了if条件,请检查控制台。