$ state.go在angular.js ui-router中没有按照我的预期工作

时间:2015-03-15 23:51:31

标签: angularjs angular-ui-router

我有一个带有ui-router子视图的主/详细信息表单。

技术1 (工作)

当用户点击编辑按钮时,我使用 ui-sref 激活修改面板,这样可以正常工作。

当我第一次点击编辑按钮或随后的时间点击我的面板时,一切都很好。

<a ui-sref=".edit({id: row.entity[\'id\']})"  class="btn btn-default btn-xs">Edit</a> 

技术2(失败)

我决定在控制器中尝试使用基本相同的状态转换格式。

这仅在用户第一次点击面板时工作,即在面板激活之前。后续点击失败并显示此错误。

// Only Works for the 1st Click
$state.go('.edit', { id: id });

技术3 (作品)

我能够通过这种方式让它工作,现在它适用于第一次点击和随后的点击。

// All ways works
$state.go('skill.edit', { id: id });

为什么技术2失败?

我显然已经使用技术2切换到某种较低级别的状态,但我不确定如何正确使用该技术?

以下是技术2中从第一次点击前到第一次点击后第二次点击后的屏幕截图。

Screenshots of the Issue

Error I am seeing

1 个答案:

答案 0 :(得分:0)

我说第一个有效,因为所有这些ui-sref值都是在状态发生变化之前计算出来的,即它们都是来自父状态(skill)。

当您尝试在控制器中执行此操作时,一旦状态已更改为skill.edit,您就会告诉它转到相对.edit状态,该状态将解析为{{1} }