Ui-roteador angular – como acessar os parâmetros na exibição nomeada aninhada, passada do modelo pai?

Oi eu estou tentando acessar um parâmetro no controlador “ViewWorklogCrtl” enquanto estiver usando o roteador-ui e correndo em dificuldade.

Basicamente, meu modelo pai contém:

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

e depois mais abaixo na página:

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

Então no meu app.js, contendo informações de roteamento do lado do cliente em resumo eu tenho:

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

O carregamento do modelo está funcionando corretamente, o problema e a pergunta para a qual não consigo encontrar uma resposta é – como acessar o “testnum” sendo passado pelo link ui-sref, para e dentro do ViewWorkLogCtrl … Existe uma abordagem melhor para esta?

Muito obrigado !!!

O instanceID é declarado como um parâmetro, então podemos acessá-lo assim

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

Todos os outros detalhes podem ser encontrados aqui https://github.com/angular-ui/ui-router/wiki/URL-Routing

E a chamada para ui-sref deve ser assim

 .. 

Ampliar:

Caso desejemos obter dois parâmetros, 1) instanceID do pai 2) testnum da corrente, temos que ajustar a definição de estado assim

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

E a ui-sref

 .. 

E podemos acessá-lo assim:

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

Eu escrevi uma diretiva personalizada para resolver esse problema.

 awesome link 

Você pode cloná-lo no Github: https://github.com/JensEger/Angular-Directives/tree/master/ui-router-helper