AngularJS:将ui-router状态参数传递给表达式

时间:2015-05-08 15:20:48

标签: angularjs angular-ui-router

我想使用UI-Router将参数传递给ui-sref。通常它会是这样的:

ui-sref="example.state({param: value})"

但是,在我的控制器中,我将路径设置在一个对象数组中,如:

self.dynamicId = $stateParams.id;

self.menu = [
  {
    label: 'Example1',
    route: 'example.state1',
    stateName: 'state1'
  },
  {
    label: 'Example2',
    route: 'example.state2',
    stateName: 'state2'
  }
];

如何使用模板中的Angular表达式传递dynamicId参数?

<div ng-repeat="link in menu">
    <a ui-sref="{{ link.route }}"></a>
</div>

现在我正在硬编码州名,这有点违背了使用ui-sref的目的:

<a ui-sref="example.{{stateName}}({id: dynamicId})"></a>

2 个答案:

答案 0 :(得分:1)

我想说,这里讨论类似的问题

Angularjs adding html to variable with ui-sref link

简而言之(检查the working plunker - 我们可以结合使用自然AngularUI-Router功能:

  • ng-href (doc here
  • $state.href() (doc here

注意:这适用于定义为 url 的一部分的参数(不仅仅是params : {} - 没有网址表示)

链接看起来像这样:

<a ng-href="{{$state.href(myStateName, myParams)}}">

我建议您使用this plunker进行操作,以查看其实际效果。

答案 1 :(得分:0)

我认为现在不可能。看看this issue。一种解决方案是使用stateNamedynamicId使用$state.href预先计算网址,如果在您的方案中可行的话。