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

时间:2019-03-11 20:32:35

标签: javascript angularjs angular-ui-router routeparams

我在ui-router中使用AngularJS。我正在尝试将参数传递到新选项卡。因此,我将参数从状态传递给控制器​​,而没有出现在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

如何设置/读取路径的路径参数?

1 个答案:

答案 0 :(得分:0)

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