Angular-ui-router 不支持外部 URL,你需要使用 $location.url()
或者 $window.open()
来重定向用户。
我建议您使用 $window.open('http://www.google.com', '_self')
,它将在同一页上打开 URL。
更新
您还可以通过添加参数 external
自定义 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');
}
});
})
示例 Plunkr
注意: 为了使其正常工作,请在新窗口中打开 Plunkr,因为由于某些安全原因,谷歌 在 iFrame 中无法打开。
$route
对象中加入一个键(例如externalURL
),一个函数,当键/值存在时将浏览器重定向,并且仅在配置或运行阶段期间绑定$on("$routeChangeStart", redirectIfExternal)
。 - DRobinson