【问题标题】:AngularJS $state open link in new tab using ctrl + clickAngularJS $state 使用 ctrl + 单击在新选项卡中打开链接
【发布时间】:2017-02-08 09:11:54
【问题描述】:

我正在尝试在新选项卡中打开一个链接,就像在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

ctrl + clicked 时,有什么方法可以为ui-sref 提供基本网址。我还想在不按 ctrl 的情况下单击时保持其正常行为?

【问题讨论】:

    标签: javascript angularjs angular-ui-router


    【解决方案1】:

    如果您创建自己的函数来处理此行为,这应该可以工作。这是一个有效的Fiddle in edit mode / Fiddle preview mode。该解决方案确实提供了逻辑。请自行创建所需的 URL。请注意,小提琴正在阻止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#/?param=1&param=2。此外,该元素已经是一个链接标签。
    • @utkarshsharma 我会改进我的答案。虽然这个目标 domain.com/somePath#/&lt;StateName&gt;?param=1&amp;param=2 是一个自定义 URL,但使用 ui-sref 并不重要,对吧?
    • 仅当用户尝试在新标签中打开它时。否则,它应该保持其行为。
    • @utkarshsharma 更新 =)
    • 这似乎是一个很好的解决方案。谢谢。
    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多