无法在控制器中获取$ stateParams的值

时间:2017-12-10 13:29:18

标签: angularjs angular-ui-router

我想在$stateParams中获取controller的值,但它总是未定义,但我可以看到view中有值。

stateparams value in view 如您所见,每个link都有值。

app.js

   .state('app.help', {
        url: '/help',
        views: {
          'menuContent': {
            templateUrl: 'templates/help.html'
          }
        }
      })
      .state('app.help-replies', {
        url: '/help/:id',
        views: {
          'menuContent': {
            templateUrl: 'templates/help-replies.html'
          }
        }
  })

html视图

这是显示数据列表的位置

  <div ng-repeat="x in helpData">
    <a class="row responsive-xs" href="#/app/help/{{x.id}}">
      <div class="col"><h6>{{x.subject}}</h6></div>
    </a>
  </div>

这是以上clickedview数据的单一视图。

 <div class="row responsive-xs" ng-init="viewHelpAndReplies()">
      <div class="col">
        <h5>Subject: {{$scope.help_id}}</h5>
      </div>
    </div>

controller.js

  $scope.viewHelpAndReplies = function(){
    console.log($stateParams.id);
  }

2 个答案:

答案 0 :(得分:0)

我认为你应该使用ui-sref来传递数据

  <div ng-repeat="x in helpData">
    <a class="row responsive-xs" ui-sref="app.help-replies({id: x.id})">
      <div class="col"><h6>{{x.subject}}</h6></div>
    </a>
  </div>

并使用

检索ID
$scope.id = $stateParams.id;

答案 1 :(得分:0)

好吧,我想我得到了我需要的东西。但我不确定这是否合适,但对我来说这没关系,因为它有效。

这就是我的所作所为:

我更改了href

href="#/app/help/{{x.id}}"

进入ng-click并创建function

ng-click="doViewHelp({id:x.id})"

在我的 controller.js:

中创建function
$scope.doViewHelp = function(data){
   $state.go('app.help-replies');
   // some codes...
}

感谢。