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

您好,我正在尝试访问控制器“ViewWorklogCrtl”中的一个参数,同时使用UI路由器,并遇到困难。

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

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' } } }) 

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

非常感谢!!!

instanceID被声明为一个参数,所以我们可以像这样访问它

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

所有其他的细节可以在这里findhttps://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) ... 

我写了一个自定义指令来解决这个问题。

 <a my-sref="{{myStateVar}}">awesome link</a> 

你可以从Github克隆它: https : //github.com/JensEger/Angular-Directives/tree/master/ui-router-helper