ui路由器动态定义";下一个";运行时的状态
ui-router dynamically define "next" state at runtime
我想使用ui路由器以动态定义的顺序组装一系列页面的导航。每个模板都来自一个独立的模块,可以重新排序或跳过,所以我不想硬编码每个模板上"下一个"按钮的ui sref属性。
我的目标是
- 用户单击"下一步"按钮
- 路由控制器查找该特定用户应该处于的状态转到下一步(每个用户都会有所不同(,并提取相应的参数
- 路由控制器调用$state.go('extstate',params(
我怎么能在页面上放一个通用按钮,比如
<a ui-sref="next">
FutureStates插件对此似乎有些过头了,所有的状态都已经定义好了,直到运行时我才知道它们应该按什么顺序调用。
我有一些复杂的参数,我想传递给无法放置在url上的状态。
睡过之后,我意识到在我的情况下,更容易的选择是使用ng点击(尤其是当我传递不容易编码的参数时(:
<a href="" ng-click="next()">
<script>
function next() {
$state.go(theNextState, { arg1: { subArg: nestedObject } } );
}
</script>
下面是一个工作示例:http://plnkr.co/edit/CnNv08Cfb2dpRsnoOxY8
我会把这个代码放入指令中,这样不同的模块只需要进行
<next-button>
在他们的模板中。
在某些情况下,这可能会导致可访问性问题,因为如果通过键盘导航,ng-click不会触发,但在我的上下文中,这不是问题(因为我将使用<按钮>,它会在键盘上触发(。对于其他有兴趣访问此解决方案的人,这里有一个讨论:
http://jakub-g.github.io/accessibility/onclick/
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何在运行时在angular 2中加载外部js脚本
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- http.listen()在运行时接受终端命令
- 自定义运行时Can'在谷歌应用引擎中看不到我的自定义日志
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- JavaScript运行时是如何工作的
- 在运行时创建元素时移到一边时出错
- 如何在运行时在HTML5画布中绘制正方形
- 如何在运行时使用javascript隐藏图像
- 在运行时使用jquery准备表体会导致设计问题
- 使用主题运行时portlet liferay时出现Javascript错误
- JavaScript运行时事件循环现有技术
- Appcelerator Titanium:在运行时下载并解释JavaScript代码
- angularjs ng点击运行时标记不起作用
- 在函数运行时显示对话
- 如何在javascript中在运行时获取对象/数组
- JavaScript运行时错误:“$"未定义-ASP.NET WebForms(MasterPage)
- 为什么"Microsoft JScript运行时错误:应为对象“”;