例如:
$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.