当使用ng-click时,AngularJS ui-router恢复为否则

时间:2014-02-14 13:39:31

标签: angularjs angular-ui angularjs-routing

我正在玩AngularJS作为学习练习。我正试图掌握AngularJS ui-router(https://github.com/angular-ui/ui-router)并且我遇到了一个问题,我遇到了一个问题。

我把一个插在一起来说明和重现。

http://plnkr.co/edit/OvmOKPMfeFqNWc7ToCff?p=preview

以上是一个简单的向导类型组件,顶部有选项卡可以移动到特定步骤,底部有一些下一个/后退按钮可以移动到下一个相关页面。

顶部的标签导航工作正常,单击沿着移动会相应地更改视图和网址。

然而,下次/后退按钮的行为非常奇怪,只要它们第一次点击下一步,而不是之后就会工作。你应该能够看到我正在谈论的内容。

看起来尝试导航到正确的视图,但随后立即恢复为否则规则。

我在代码中添加了钩子以在控制台中进行跟踪。实质上所有 next / back 按钮都称为相关状态,因此 $ state.go(“step1”),$ state.go(“step3”)等等

希望我已经提供了足够的信息,并希望任何人都可以带来任何见解。

感谢。

2 个答案:

答案 0 :(得分:8)

您必须从锚点上的href attr中删除“#”。

答案 1 :(得分:1)

我无法找出确切原因,但看起来主要区别在于提供的relative状态对象传递给$state.go()

如果您调试ui-sref的来源,您会注意到他们使用了go函数:

$state.go(ref.state, params, { relative: base });

如果您比较链接使用的base对象以及内部控制器调用$state.$current时使用的默认值($state.go(nextStep)),您会发现明显的差异。

虽然我没有确切地知道为什么这些会导致您的问题,但您可以通过更新您的ui架构来纠正它。创建一个父状态,所有步骤都是子项,嵌套ui-views。然后使用父状态控制器来跟踪步骤,并管理向前和向后移动。