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