angularjs - 使用 ui-sref 和 $state.go 在新标签页中打开

所以我在使用这两个时遇到了问题。如果我右键单击 ui-sref 并单击“在新选项卡中打开”,它会正常打开并且我保持登录状态。但是,如果我右键单击具有 ng-click 并且我使用 $stae.go 它将我从我的应用程序中注销并且不会将我导航到该页面。有没有办法在使用 $state.go 时获得 ui-sref 新选项卡行为?

这是一些代码:

如果我右键单击并在新选项卡中打开它工作正常

        <a ui-sref="app.locations" ui-sref-active="active"
           ng-class="{active: $root.state.includes('app.locationDetail')}">
            <div class="sub-menu-icon">
                <i class="icon-locations"></i>
            </div>
            <span class="sub-menu-label">Locations</span>
        </a>

如果我右键单击并在新选项卡中打开并且调用此方法,它会将我注销并且不会导航我。

<a href ng-click='vm.viewDetail(dataItem)'><span>" + value + "</span></a>

viewDetail 方法中调用它

vm.viewDetail = function ($event, dataItem) {
    var id = dataItem.id;
    $state.go(vm.detailRoute, {id: id});
};

我需要在 $state.go 方法中添加一些东西来阻止这种情况发生吗?

最佳答案

如果你使用 ng-click,将 $window 服务注入(inject)你的 Controller 。

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope, $window) {
  $scope.viewDetail = function(dataItem) {
    var id = dataItem.id;
    $window.open('/'+vm.detailRoute+'/'+id);
  };
});

https://stackoverflow.com/questions/54519779/

相关文章:

sql-server - 如何将变量传递给 SSDT 2017 中的 ODBC SQL 命令?

git - Jenkins 管道在远程源提取期间失败(无法更新本地引用)

spring - 多部分文件(未给定条件)。错误 400(错误请求)

laravel - 无法使用 npm run production 在生产环境中编译 Assets

c++ - 如何在 Visual Studio Code 中构建和运行作为发布版的 C++ 应用程序

firebase - 为什么我的 Xamarin.iOS 应用程序没有收到来自 Google Fir

node.js - Express Session cookie 未保存在 Chrome 中?

listview - 只允许扩展一个 ExpansionTile

c# - try-catch 在 IL 中如何工作?

python - GAE : Why does GAE perform worse than nor