3

我想实现一个有条件的.when(),像这样:

.when('/abc', {
     // if MyService.allow == true
     template: '<myDirec></myDirec>'
     // else
     redirectTo: '/'
})

我的/abc路线将像我的一项服务中的变量保持“保护”一样,以有状态的方式。所以我想在其他地方将这个状态设置为真/假,下次用户尝试访问 /abc 时,他将被有条件地提供服务。

我怎样才能做到这一点?- 尽可能少的第三方依赖

我尝试和阅读的内容: - 只需在 .config 中注入我的服务,我了解到这是不可能的 - 阅读有关使用提供程序的信息,因为它们可以被注入。但是我可以像使用我的服务一样使用它们吗?- template 和 templateUrl 接受一个函数,但这并没有真正帮助我

首先十分感谢!

4

1 回答 1

3

您可以使用 $routeChangeStart 事件。它在 url 更改时触发,并将 current 和 next 作为参数,例如:

$rootScope.$on('$routeChangeStart', function(event, next, current) {
  if (next === 'abc') // do something;
});
于 2014-09-10T16:23:51.430 回答