我正在做某种自定义菜单,我们正在使用AngularJS v1.6.7和ui.router,我的州看起来像:
.state('programs',
{
url: '/programs/:id',
component: 'programs',
//below is our custom menu object
menu: {
name: 'Program id :id'
}
})
因此,我通过ui-sref="programs({id: '123'})"
在HTML中转到此状态。之后,在代码的某处,我使用let currentState = $state.current
获取当前状态,然后我尝试显示currentState.menu.name
之类的名称作为结果,我看到Program id :id
,我的问题是,如何替换'这个字符串中的id'参数?是否有任何公开的,ui.router开箱即用的方法,这样做? ui.router以某种方式用这些参数填充例如URL,所以在URL中,我看到123而不是:id。我的$state.params
拥有ID字段:{#:null, id:123}
。
答案 0 :(得分:1)
您可以使用resolve
方法传递网址参数,然后这些方法将在您的控制器和范围中提供:
{
url: '/programs/:id',
component: 'programs',
menuData: function($stateParams){
return {
id: $stateParams.id
}
},
controller: function($scope, menuData){
// Now you can use it, either in a template, etc.
$scope.id = menuData.id
}
})
检查此link以获取更详细的步骤