一尘不染

如何让ui路由器转到外部链接,例如google.com?

angularjs

例如:

 $stateProvider
            .state('external', {
                url: 'http://www.google.com',

            })

url假定这是一个内部状态。我希望它像href或类似的东西。

我有一个将从ui路线构建的导航结构,并且需要一个链接以转到外部链接。不一定只是谷歌,那只是一个例子。

不在链接或$ state.href(’ http://www.google.com
‘)中查找。在路由配置中声明性地需要它。


阅读 501

收藏
2020-07-04

共1个答案

一尘不染

Angular-ui-router不支持外部URL,您需要使用$location.url()或重定向用户$window.open()

我建议您使用$window.open('http://www.google.com', '_self')它将在同一页面上打开URL。

更新资料

您还可以ui-router通过添加参数来自定义external,它可以是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');
      }
    });
})

plnkr

注意 :为了使它能正常工作, 在新窗口中打开Plunkr,因为出于安全原因,
Google
无法在iFrame中打开它。

2020-07-04