使用 URL 路由到 AngularJS 中的新选项卡传递状态参数而不显示在 url 中

Pass State params using URL Routing to a new tab in AngularJS without showing up in the url

我正在使用 AngularJS 和 ui-路由器。我正在尝试将参数传递给新选项卡。所以我将参数从状态传递到控制器而不显示在 URL 中。我像这样使用 $state.href 的参数:

在js文件中,

var paramValues = { 'path': true, 'logoValue': 123};
var achiveRoute = $state.href('state123', paramValues);
$window.open(achiveRoute, '_blank');

在状态文件中,

.state("state123", {
    url: "/sessiontimeline",
    templateUrl: /partials/session.html,
    params : { 'path': true, 'logoValue': null }
}

我正在尝试使用 StateParams 在控制器中访问这些参数。

var logoValue = $stateParams.logoValue;

但是 logoValue 显示 undefined

我如何set/read 路由中的路径参数?

为了在查询字符串上传递这些参数,您必须定义您的路由,以便它在查询字符串上接受它们。现在正在发生的事情是,您没有使用接受查询字符串参数的 URL 定义的状态,因此它使用您在状态中指定的默认值(true for pathnull 对应 logoValue)。以下是您应该如何定义状态以接受查询字符串上的这些参数:

.state("state123", {
    url: "/sessiontimeline?path?logoValue",
    templateUrl: /partials/session.html,
    params : { 'path': true, 'logoValue': null }
}

使用上述配置,您可以直接通过 $state.go 调用或通过查询字符串传递参数,您的 $state.href('state123', paramValues) 应该输出 /sessiontimeline?path=true&logoValue=123.