【问题标题】:ui-sref and variable state parameter namesui-sref 和变量状态参数名称
【发布时间】:2014-11-26 10:57:46
【问题描述】:

我想渲染一个链接,比如:

<a ui-sref="myState({myKey: 'my variable type value'})">

其中状态名称myState 和键myKey 是变量。

有没有办法做到这一点?

【问题讨论】:

  • 是的,您需要在路由中注册 myKey。但是等等,您的意思是不是 myKey 实际上是动态派生的?
  • 是的,我希望 myKey 成为一个实际的范围变量,例如在 link 方法中设置。

标签: angularjs angular-ui-router


【解决方案1】:

我发现自己处于同样的情况,我也无法完成,尝试使用 ng-click 移动代码并在 ng-click 函数内部使用 $stage.go 并在那里传递参数,例如:

$scope.clickHandler = function(param){
    $state.go('state.name',{myKey:param});
}

【讨论】:

  • 感谢您的建议。我真的很想避免这种情况,尽管在这件事上我可能别无选择。
  • ui-router 目前不支持动态 ui-srefs。 github.com/angular-ui/ui-router/issues/395
  • 遗憾的是,此方法无法生成有效的 href 链接
【解决方案2】:

不支持动态ui-sref,但我找到了使用the href method of the $state service生成链接的建议:

<a href="{{ctrl.url(myState, myKey)}}>

url = function(myState, myKey) {
    return $state.href(myState, {myKey: 'my variable type value'});
}

【讨论】:

    【解决方案3】:

    实际上我找到了一个解决方案,所以希望它仍然可以帮助某人。

    <li ng-repeat="item in array" ui-sref="stateName({param:{{item.key}}})">
         Some content
    </li>

    在我的情况下,我使用的是 ui-router 1.0.15,所以不确定它是否适用于 v1.0.x 之前的版本

    【讨论】:

      【解决方案4】:

      How to pass parameters using ui-sref in ui-router to controller

      这里提出了类似的问题。他的解决方案是设置一个执行路由的状态,然后通过触发所需 URL 的 ui-sref 将参数传递给该状态

      【讨论】:

        【解决方案5】:

        文档({ id: document.id})

        如果你的状态是 document/:id

        【讨论】:

          【解决方案6】:

          我认为最简单的解决方案是

          <button ui-sref="myState({mykey:vm.key})"> Link </button>
          

          其中 vm.key 是从控制器传递的值。这避免了答案中使用的额外javascript。它与接受的答案非常相似,但变量按原样用于 html 标记,而不创建处理程序。

          【讨论】:

          • 这里的 myState 是什么?
          猜你喜欢
          • 2016-01-04
          • 2015-03-18
          • 1970-01-01
          • 2015-05-13
          • 1970-01-01
          • 1970-01-01
          • 2014-04-08
          • 2016-09-05
          • 2018-02-15
          相关资源
          最近更新 更多