使用ctrl + click在新选项卡中打开AngularJS $状态链接

时间:2017-02-08 09:11:54

标签: javascript angularjs angular-ui-router

我正在尝试在新标签页中打开一个链接,就像ctrl + clicked时会打开普通链接一样,除了它附加了ui-sref指令,它生成一个带/stateName?param1=test&param2=test的href属性,由于使用URL打开了标签:domain.com/stateName?param1=test&param2=test

现在问题是我的应用已加载

网址 - domain.com/SomePath#/

并且生成的链接(ui-sref)是

网址 - domain.com/StateName?param1=test&param2=test

ui-sref时,有没有办法向ctrl + clicked提供基本网址。我还想在没有按下ctrl的情况下单击时保持其正常行为吗?

1 个答案:

答案 0 :(得分:2)

如果您创建一个自己的函数来处理此行为,这应该有效。这是一个有效的Fiddle in edit mode / Fiddle preview mode。该解决方案确实提供了逻辑。请自行创建您需要的网址。请注意,小提琴阻止了popups

视图

<a ng-click="specialClick($event, 'stateName', { param: 'value'})">Click me</a>

AngularJS控制器

$scope.specialClick = function (e, state, params) {
   if (e.ctrlKey) {
      window.open($state.href(state, params, '_blank'));
   } else {
      $state.go(state, params, {notify: false});
   }
}