ui-sref 和变量状态参数名称

Posted

技术标签:

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

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

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

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

有没有办法做到这一点?

【问题讨论】:

是的,您需要在路由中注册 myKey。但是等等,您的意思是不是 myKey 实际上是动态派生的? 是的,我希望 myKey 成为一个实际的范围变量,例如在 link 方法中设置。 【参考方案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 是什么?

以上是关于ui-sref 和变量状态参数名称的主要内容,如果未能解决你的问题,请参考以下文章

Angular-UI-Router:ui-sref 不使用参数构建 href

《小白滴滴系列》-angualr的带参数跳转

嵌套ui-sref时防止调用父级

AngularJS 1.5“无法从州'家'解决'___'”

Vue--vuex状态管理-多界面状态管理$store.state.变量名称 ---数据通触发事件改变this.$store.commit

在 Angularjs 中 ui-sref 和 $state.go 如何传递单个多个参数和将对象作为参数