Angular - 有条件地打开新选项卡中的所有链接

时间:2016-05-20 14:16:02

标签: angularjs iframe angular-ui-router window.open

我有一个角度应用,可以通过iFrame将某些区域嵌入其他网站。

在这种情况下,我希望iFrame中使用的所有链接都在新窗口中打开。当不在iFrame中时,相同的链接应该只更新路由/状态。

该应用使用ui-router。

如果页面位于iFrame中,是否有一种简单的方法可以在新窗口中有条件地打开所有路径/状态更改?

我试过这个:

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options) {

  if(inIFrame) {
    $window.open($state.href(toState.name, toParams, {absolute: true}), '_blank');
    event.preventDefault();
    return;
  }
 })

哪种方式有效,但会触发应用的初始加载。

所以,第一个状态更改实际上是在iFrame中启动我要渲染的路径 - 它是我想要捕获的所有后续路径。

任何想法?

1 个答案:

答案 0 :(得分:0)

也许有更优雅的方式来做到这一点,但是呢?

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options) {

if ($rootScope.beenHereDoneThat) {
  if(inIFrame) {
    $window.open($state.href(toState.name, toParams, {absolute: true}), '_blank');
    event.preventDefault();
    return;
  }
  else {
    $rootScope.beenHereDoneThat = true;
  } 
})