0

我正在将 AngularJS 与 ui-router 一起使用。我正在尝试将参数传递给新选项卡。所以我将参数从状态传递到控制器而不显示在 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

如何从路由中设置/读取路径参数?

4

1 回答 1

0

为了在查询字符串上传递这些参数,您必须定义您的路由,以便它在查询字符串上接受它们。现在发生的情况是您没有使用接受查询字符串上的参数的 URL 定义状态,因此它使用您在状态中指定的默认值(trueforpathnullfor 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.

于 2019-03-11T22:27:16.303 回答