【发布时间】:2014-05-27 12:53:24
【问题描述】:
Angular 的内部结构再次让我感到困惑。
我需要在加载特定视图时确定之前的路线。
我就是这样做的
app.controller('TrashCtrl',function($scope,$rootScope){
$rootScope.$on('$locationChangeSuccess',function(evt, absNewUrl, absOldUrl) {
var hashIndex = absOldUrl.indexOf('#');
var oldRoute = absOldUrl.substr(hashIndex + 2);
console.log(oldRoute);
});
});
不幸的是,在逻辑开始工作之前,我必须调用与该控制器对应的视图一次。控制器第一次触发时,没有任何记录。此外,在此初始加载后,应用程序将记录每个 routeChange,即使加载的视图不适用于TrashCtrl
我想要这样:
- 当视图
Trash(其控制器为TrashCtrl)加载时,如果这是第一个路由,我需要前一个路由或空字符串。 - 如果它只在实际的
trash路由被调用时触发,而不是在每次路由更改时触发,那就太好了。
如何实现这一目标?
编辑:
请注意,我知道创建自定义服务并将每次更改写入它的可能性。这不是我想要的。我想仅在需要时才对数据进行 fecth,例如仅在调用 Trash 时。
【问题讨论】:
-
您是否尝试只使用
$scope而不是$rootScope? -
@callmekatootie 是的。结果相同
-
既然你提到了“获取数据”,你知道
$routeProviderroute-objects 的resolve属性吗? -
虽然我指的是“数据”的 URL,但这实际上是一个不错的主意。我试试,谢谢
-
无法理解您的用例。你可以为此创建一个 plnker 吗?