AngularJS $state如何使用ctrl + click在新标签页打开链接

4

我想要在新标签页中打开链接,就像正常的链接会在按下ctrl + clicked时打开一样。但是这个链接附带了ui-sref指令,生成了一个带有/stateName?param1=test&param2=test的href属性,导致该标签页的URL变成了:domain.com/stateName?param1=test&param2=test

现在的问题是我的应用程序加载在以下URL上:

URL - domain.com/SomePath#/

而生成的链接(ui-sref)是:

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

是否有办法在ctrl + clicked时向ui-sref提供基础URL?同时我也想保留在没有按下ctrl键的情况下点击链接的正常行为。

1个回答

3
如果你创建一个自己的函数来处理这个行为,那么它应该可以正常工作。这里有一个可用的Fiddle编辑模式 / Fiddle预览模式。这个解决方案提供了逻辑。请自己创建所需的URL。请注意,fiddle会阻止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});
   }
}

你如何传达目标状态?期望的URL是 - domain.com/somePath#/<StateName>?param=1&param=2。此外,该元素已经是一个链接标签。 - utkarsh sharma
@utkarshsharma我会改进我的答案。虽然这个目标domain.com/somePath#/<StateName>?param=1&param=2是一个自定义URL,但ui-sref的使用并不重要,对吧? - lin
仅当用户尝试在新标签页中打开时才应该更改其行为,否则应保留其行为。 - utkarsh sharma
@utkarshsharma 已更新 =) - lin
这似乎是一个不错的解决方案。谢谢。 - utkarsh sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接