例如:
- $stateProvider
- .state('external',{
- url: 'http://www.google.com',})
url假定这是一个内部状态.我希望它像href或这样的东西.
我有一个导航结构,将从ui路由构建,我需要一个链接去外部链接.不一定只是google,这只是一个例子.
不是在一个链接或$state.href(‘http://www.google.com‘)中寻找它.需要它在路由配置中声明性地.
Angular-ui-router不支持外部URL,您需要使用$location.url()或$window.open()重定向用户,
我建议您使用$window.open(‘http://www.google.com’,’_self’),这将打开同一页面上的URL.
更新
您还可以通过添加外部参数来定制ui-router,它可以是true / false.
- $stateProvider
- .state('external',{
- url: 'http://www.google.com',external: true
- })
然后配置$stateChangeStart在你的状态&处理重定向部分.
运行块
- myapp.run(function($rootScope,$window) {
- $rootScope.$on('$stateChangeStart',function(event,toState,toParams,fromState,fromParams) {
- if (toState.external) {
- event.preventDefault();
- $window.open(toState.url,'_self');
- }
- });
- })
Note: Open Plunkr in a new window in order to make it working,because 07001 doesn’t get open in iFrame due to some security reason.