ui-router动态定义" next"在运行时状态

时间:2015-07-04 13:29:45

标签: javascript angularjs angular-ui-router

我想使用ui-router以动态定义的顺序组装一系列页面的导航。 每个模板都来自一个独立的模块,可以重新排序或跳过,因此我不想对" next"的ui-sref属性进行硬编码。每个模板上的按钮。

我的目标是

  • 用户点击下一步按钮
  • 路由控制器查找此特定用户应该处于的状态 转到下一个(因用户而异),并提取相应的参数
  • 路由控制器调用$ state.go(' nextstate',params)

如何在页面上放置一个通用按钮,比如说

<a ui-sref="next">

FutureStates附加组件似乎有点矫枉过正,所有状态都已定义,我直到运行时才知道应该调用它们的顺序。

我有复杂的参数,我想传递给无法放在网址上的状态。

1 个答案:

答案 0 :(得分:0)

睡觉后,我意识到在我的情况下更简单的选择是使用ng-click(特别是当我传递的参数不易编码时):

<a href="" ng-click="next()">

<script>
   function next() {
       $state.go(theNextState, { arg1: { subArg: nestedObject } } );
   }
</script>

以下是一个有效的例子:http://plnkr.co/edit/CnNv08Cfb2dpRsnoOxY8

我会将此代码弹出到指令中,因此不同的模块只需要执行

<next-button>

在他们的模板中。

在某些情况下,这可能会导致可访问性问题,因为如果键盘导航,则ng-click不会触发,但在我的上下文中这不是问题(因为我将使用&lt; button&gt;它会触发它键盘)。对于有兴趣使这个解决方案可访问的其他人,这里有一个讨论:

http://jakub-g.github.io/accessibility/onclick/