我尝试在我的应用程序中实现AngularJS路由器。
所以我定义了一条路线(angular.module('MyModule').config()
):
$routeProvider
.when('/:stepId?', {
templateUrl: EditorApp.webDir + 'bundles/innovapath/angularjs/Step/Partial/step-form.html',
controller: 'StepFormCtrl',
controllerAs: 'stepFormCtrl',
resolve: {
step: [
'$route',
'PathService',
function($route, PathService) {
var step = null;
// Retrieve the step from route ID
if ($route.current.params && $route.current.params.stepId) {
step = PathService.getStep($route.current.params.stepId);
}
return step;
}
],
inheritedResources: [
'$route',
'PathService',
function($route, PathService) {
var inherited = [];
var step = PathService.getStep($route.current.params.stepId);
if (angular.isDefined(step) && angular.isObject(step)) {
var path = PathService.getPath();
// Grab inherited resources
inherited = PathService.getStepInheritedResources(path.steps, step);
}
return inherited;
}
]
}
})
.otherwise({
redirectTo: '/:stepId?'
});
我也在监听$routeChangeStart
事件,但是当我的页面加载时它不会被触发。
我无法弄清楚为什么路线没有解决。此外,当我用F5
刷新页面时,我遇到了同样的问题。
当我在我的应用程序中使用内部链接时,路径解析工作完美。
有什么想法吗?
答案 0 :(得分:0)
好的,找到了。
在处理指令ng-view
之前,我有许多其他父指令需要初始化,因此它推迟计算错过$locationChange
事件的路由。
解决方案是强制路线计算:
$route.reload();