我有一个角度应用,可以通过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中启动我要渲染的路径 - 它是我想要捕获的所有后续路径。
任何想法?
答案 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;
}
})