4

I'm trying to include the bootstrap scrollspy in my ember app.

The scrollspy needs href="#section1" to do it's work, which is obviously confusing the router. That is giving me javascript errors like Uncaught Error: No route matched the URL 'section1', and breaking the scrollspy I believe. The last element is always selected.

Has somebody else managed to get this going? Is there a way to tell the router not to worry about this view?

4

3 回答 3

1

这不是 ScrollSpy 的问题,而是 Ember 路由器的问题http://discuss.emberjs.com/t/handle-incoming-links-with/4839

也许您可以隔离问题以确认?在 Ember 中使用常规的旧哈希链接进行测试。

于 2014-07-31T01:35:48.243 回答
0

“这不是 ScrollSpy 的问题,而是 Ember 路由器的问题”。--@elise-chant

问题在于,Ember 的核心依赖于破解 url 中的哈希 ('#') 并将其用于自己的目的。不支持这样的网址 - http://example.com/#/about#faq

@elise-chant 的回复将我引向了核心问题,我现在很高兴地报告,从 Ember 1.9.0 开始,支持具有多个哈希 ('#') 的 url。

杰伊菲尔普斯提供了修复,最近有这样的说法:


我们可以看到它[Fix #4098]登陆了稳定的 v1.9.0 版本。

不过,目前还没有任何代码可以将页面实际滚动到 id="anchor" 。所做的更改是为了允许这种代码发生。我已经与一些核心成员讨论过这样的实现,并且仍计划尝试将其添加到核心中,但与此同时,您绝对可以使用 >=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();
       }
     }   
   }); 
 } 

当我找到可以解决此问题的周期时,我将提供一个可行的示例,但是如果可以的话,我建议您继续努力。

我个人热衷于让人们尝试一下,并在这里报告你的进展情况。

于 2015-01-28T14:25:23.250 回答
0

您应该能够使用 data-target 而不是 href 与 scrollspy。

data-target="#section1"
于 2013-04-23T10:57:51.480 回答