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

标签 angularjs

所以我在使用这两个时遇到了问题。如果我右键单击 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);
  };
});

关于angularjs - 使用 ui-sref 和 $state.go 在新标签页中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519779/

相关文章:

angularjs - MEAN 堆栈的文件夹结构

javascript - angularjs - 动态更新页面上的所有指令后重新加载它们

angularjs - 将 AngularJS 延迟 promise 转换为 JSOM 的 AngularX observable

angularjs - 在 Controller 中处理来自服务的错误

javascript - AngularJS v1.2 ngAnimate 和 ngView

javascript - AngularJS 与 Bootstrap 导航栏一起用于单页应用程序

javascript - 如何在 Angular 中使用 css 类进行操作

angularjs - 在 Angular UI Grid 中导出为 CSV 时更改文件名

javascript - inventoryData 返回未定义,因为 $http.get 是异步的,如何重构代码?

AngularJS 不将数据传递给 JQuery DataTable