我试图使用
重新加载我的控制器$state.go('movies', null, {'reload':true});
但在使用此功能后,我收到此错误
过渡拒绝($ id:1类型:2,消息:转换已被其他过渡取代,详情:过渡#63('主页'{} - >'电影'{}))
我很无能为什么会这样。虽然功能正常。
代码:
$scope.filterMovies = function(genre){
var filteredMovies = [];
MoviesService.msGetData().then(function(dataparam){
$scope.movielist = dataparam;
for(var idx=0; idx<$scope.movielist.length; idx++){
if($scope.movielist[idx].genres.indexOf(genre) > -1){
filteredMovies.push($scope.movielist[idx]);
MoviesService.msSetFilteredMovies(filteredMovies);
//$state.go('movies');
$state.go('movies', null, {'reload':true});
}
}
});
}
注意:我使用的是AngularJS v1.6.5和angular-ui-router v1.0.5
提前致谢。
答案 0 :(得分:2)
您可以使用:
$state.reload();
或
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
答案 1 :(得分:0)
发生此错误是因为您要在现有过渡中创建一个新过渡。如错误所述,到home
的过渡已由您用movies
创建的向$state.go('movies'[, ...]);
的过渡所取代。
要停止在$state.go('movies')
中出现错误的地方$timeout
。例如。
$timeout(function() {
$state.go('movies', null, {'reload':true});
});
答案 2 :(得分:0)
在我的情况下,路由文件对权限数组为空感到愤怒:
import * as angular from 'angular';
import '@uirouter/angularjs';
import { StateProvider, UrlRouterProvider } from '@uirouter/angularjs';
import { Permissions } from '@appname/app.permissions';
angular.module('app').config([
'$stateProvider',
'$urlRouterProvider',
'PERMISSIONS',
function ($stateProvider: StateProvider, $urlRouterProvider: UrlRouterProvider, PERMISSIONS: Permissions) {
$urlRouterProvider.when('/batch', '/batch/abc');
$stateProvider
.state('batch', {
parent: 'root',
url: '/batch',
template: '<batch></batch>',
data: {
permissions: [PERMISSIONS.NavItemBatch],
menu: {
name: 'navigation.batch',
icon: 'file_upload',
showSubmenu: true
}
}
}).state('batch.abc', {
url: '/abc',
template: '<abc></abc>',
data: {
permissions: [],// <-- angry - remove entirely or add valid permission
menu: {
name: 'ABC'
}
}
});
}]);