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