一尘不染

角度UI路由器-如何访问从父模板传递的嵌套命名视图中的参数?

angularjs

嗨,我正在尝试使用ui-router并遇到困难时访问控制器“ ViewWorklogCrtl”中的参数。

基本上,我的父模板包含:

a(ui-sref="instance-ticket.worklog({id:{{ticket.testnum}}})") show

然后再下一页:

section(ui-view="top-section")

然后在我的app.js中,简而言之包含客户端路由信息:

 $stateProvider
.state('instance-ticket', {
  url: '/ticket/:instanceID',
  templateUrl: 'partials/instance-ticket',
  controller: 'ViewTicketCrtl'
})
.state('instance-ticket.worklog', {
  views:{
    'top-section':{
      templateUrl:'/partials/ticket.worklog.jade',
      controller: 'ViewWorklogCrtl'
      }
  }
  })

模板加载正常工作,我找不到答案的问题是-如何访问通过ui-sref链接传递到ViewWorkLogCtrl以及在ViewWorkLogCtrl中传递的“
testnum” …是否有更好的方法这个?

非常感谢!!!


阅读 255

收藏
2020-07-04

共1个答案

一尘不染

instanceID声明为参数,因此我们可以像这样访问它

.controller('ViewWorklogCrtl',
    [       '$scope','$stateParams'
    function($scope , $stateParams ) {    
        // 
        $scope.instanceID = $stateParams.instanceID;
        ...

所有其他详细信息可以在这里找到https://github.com/angular-ui/ui-router/wiki/URL-
Routing

呼叫ui-sref应该是这样的

<a ui-sref="instance-ticket.worklog({ instanceID:ticket.testnum })" >..

延伸:

如果我们想获取两个参数,1)来自父级的instanceID 2)来自当前的testnum,我们必须像这样调整状态定义

.state('instance-ticket', {
  url: '/ticket/:instanceID',      // instanceID
  templateUrl: 'partials/instance-ticket',
  controller: 'ViewTicketCrtl'
})
.state('instance-ticket.worklog', {
  // new param defintion
  url: '/worklog/:testnum',         // testnum
  views:{
    'top-section':{
      templateUrl:'/partials/ticket.worklog.jade',
      controller: 'ViewWorklogCrtl'
      }
  }

ui-sref

<a ui-sref="instance-ticket.worklog({ instanceID:1, ticket.testnum:2 })" >..

我们可以这样访问它:

.controller('ViewWorklogCrtl',
    [       '$scope','$stateParams'
    function($scope , $stateParams ) {    
        // 
        console.log($stateParams.instanceID)
        console.log($stateParams.testnum)
        ...
2020-07-04