我正在尝试将bootstrap scrollspy包含在我的余烬应用中。
scrollspy需要href="#section1"
来完成它的工作,这显然让路由器感到困惑。这给了我像Uncaught Error: No route matched the URL 'section1'
这样的javascript错误,打破了我相信的卷轴。始终选择最后一个元素。
有没有其他人成功实现这一目标?有没有办法告诉路由器不要担心这个视图?
答案 0 :(得分:1)
这不是ScrollSpy的问题,这是Ember Router问题http://discuss.emberjs.com/t/handle-incoming-links-with/4839
也许您可以隔离问题以确认?在Ember中使用常规旧哈希链接进行测试。
答案 1 :(得分:0)
您应该能够使用数据目标而不是href with scrollspy。
data-target="#section1"
答案 2 :(得分:0)
“这不是ScrollSpy的问题,这是Ember Router的一个问题”。 - @艾丽丝-呗
问题在于它的核心Ember依赖于在网址中黑客攻击哈希('#')并将其用于自己的目的。没有像这样的网址支持 - http://example.com/#/about#faq
@ elise-chant的回复引导我进入core issue,现在我很高兴地报告,从Ember 1.9.0开始,支持带有多个哈希('#')的url。Jay Phelps提供了解决方案,最近有人这样说:
我们可以看到它[Fix #4098]落在稳定的v1.9.0版本中。
还没有任何代码可以实际滚动页面 但是,对于你来说,id =“锚”。所做的改变是允许那种 代码发生。我和一些核心成员谈过这个问题 这样的实现,仍然计划尝试将其添加到核心但在 与此同时,你绝对可以使用> = 1.9.0并添加自己的代码 这样做,对于简单的情况应该是相当直接的:
有些人喜欢这样但是完全未经测试:
didTransition: function () {
Ember.run.schedule('afterRender', this,
function () {
if (window.location.hash) {
var el = document.getElementById(window.location.hash.substr(1));
if (el) {
el.scrollIntoView();
}
}
});
}
当我找到解决这个问题的周期时,我会有一个有效的例子,但如果可以的话,我建议你自己动手。
我个人希望人们尝试一下,然后在这里报告你如何去做。