我正在玩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”)等等
希望我已经提供了足够的信息,并希望任何人都可以带来任何见解。
感谢。
答案 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。然后使用父状态控制器来跟踪步骤,并管理向前和向后移动。