嗨,我正在尝试使用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” …是否有更好的方法这个?
非常感谢!!!
将instanceID声明为参数,因此我们可以像这样访问它
instanceID
.controller('ViewWorklogCrtl', [ '$scope','$stateParams' function($scope , $stateParams ) { // $scope.instanceID = $stateParams.instanceID; ...
所有其他详细信息可以在这里找到https://github.com/angular-ui/ui-router/wiki/URL- Routing
呼叫ui-sref应该是这样的
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) ...