这是我的测试应用http://plnkr.co/edit/OjpZ1h?p=preview
我有404错误页面状态,如果此页面不存在,我需要显示请求页面的路径。这里是重定向代码:
$urlRouterProvider.otherwise(function($injector, $location){
var lastPath = $location.path();
$injector.invoke(['$state', function($state) {
var params = angular.copy($state.params);
$state.go('main.error404',params, {location: false});
}]);
return lastPath;
});
除了应用程序已处于错误状态并且我将转到下一页也不存在的情况外,一切正常。
在这种情况下,重新加载不会发生,它会显示最后一页的路径。如果我将此代码更改为
$state.go('main.error404',params, {reload: true,location: false});
然后显示正确的路径,但所有视图都在重新加载,它看起来非常讨厌动画。
有没有办法用angular-ui-router重新加载特定的ui-view?
答案 0 :(得分:1)
感谢Chris T的评论,我改写了这样的话:
$stateProvider
.state('main.error404',{
url: '/404/{path}',
views: {
"page@": {
templateUrl: "error.html",
controller: function($scope,$location,$state){
$scope.page = $state.params.path;
}
}
}
});
$urlRouterProvider.otherwise(function($injector, $location){
var lastPath = $location.path();
$injector.invoke(['$state',function($state) {
var params = angular.copy($state.params);
params.path = lastPath;
$state.go('main.error404',params, {location: false});
}]);
return lastPath;
});
每次路径参数更改时状态重新加载