【问题标题】:Append query parameter from controller -UI router从控制器 -UI 路由器追加查询参数
【发布时间】:2017-04-19 13:05:17
【问题描述】:

我有一个父状态和该父状态的子状态。父状态有一个可选参数 reviewId。一切正常,当我发送 $state.go 中的参数时,状态已正确打开。我需要的是在创建新评论时附加(在 url 中添加可选的查询参数)(在进行后端调用后填充 id)。

这是用 id 打开现有评论的网址:

http://localhost:3000/#/planning?reviewId=1000.

创建新评论网址时为:

http://localhost:3000/#/planning。所以我需要的是在保存审核(填充 ID)后附加 ?reviewId=newId 而没有 state.go。

$stateProvider
            .state('root.planning', {
                url: '/planning?reviewId=',
                abstract: true,
                params: {
                    reviewId: null,
                    readOnlyMode: null,
                    locked: null,
                    editButton: null
                },
                reloadOnSearch:false,
                views: {
                    '@': {
                        templateUrl: 'src/app/modules/planning/views/planning.tpl.html',
                        controller: 'PlanningMainController as reviewvm'
                    }
                }
            })
            .state('root.planning.planning', {
                url: '',
                params: {
                    reviewId: null
                },
                data: {
                    planningChild: true,
                    stateTypeCd : "PLA"
                },
                reloadOnSearch:false,
                templateUrl: 'src/app/modules/planning/views/tabs/tab.planning.view.html',
                controller: 'PlanningController as planningvm'
            })

编辑

还尝试在访问 Id 后更新 stateParams 中的 reviewId,然后调用 $state.reload()。使用这种方法 stateParams.reviewId 在重新加载后为空。我想知道我是否可以在不重新加载的情况下做到这一点。

【问题讨论】:

  • 创建新评论 ID 后,将其分配给 $stateParam.reviewId,之后您可能需要执行 $state.reload() 才能在您的 url 中生效。
  • @ImmanuelKirubaharanS 尝试添加:$stateParams.reviewId = reviewvm.review.id; $state.reload();并且状态已重新加载,但 reviewId 为空。而且我想知道我是否可以在不重新加载状态的情况下以某种方式做到这一点。

标签: javascript angularjs angular-ui-router


【解决方案1】:
$stateProvider
.state('root.planning', {
url: '/planning?reviewId',
abstract: true,
controller: function($scope, $stateParams) {
$scope.reviewId = $stateParams.reviewId;
}

如果 $statePrams.reviewId 可用,则调用该函数。希望对你有帮助

【讨论】:

  • 嗯..不确定是否跟随。因此,如果 reviewId 为 null,则初始化第一个孩子(root、planning.planning)的状态和控制器。因此,当保存评论时,我不会更改状态,但 reviewId 将获得价值。所以我只需要更新 url 以包含 id 而不会改变状态或任何东西。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
相关资源
最近更新 更多