4

私のemberアプリにbootstrap scrollspyを含めようとしています。

scrollspy はそのhref="#section1"作業を行う必要があり、これは明らかにルーターを混乱させます。それは私にのようなjavascriptエラーを与えてUncaught Error: No route matched the URL 'section1'おり、私が信じているscrollspyを壊しています。最後の要素が常に選択されます。

他の誰かがこれをうまくやることができましたか?このビューを気にしないようにルーターに指示する方法はありますか?

4

3 に答える 3

1

これは ScrollSpy の問題ではなく、Ember Router の問題ですhttp://discuss.emberjs.com/t/handle-incoming-links-with/4839

おそらく、問題を切り分けて確認できますか? Ember で通常の古いハッシュ リンクを使用してテストを行います。

于 2014-07-31T01:35:48.243 に答える
0

「これは ScrollSpy の問題ではなく、Ember Router の問題です」. --@elise-chant

問題は、Ember が URL のハッシュ (「#」) をハッキングし、独自の目的で使用することに依存していることです。このような URL はサポートされていません - http://example.com/#/about#faq

@elise-chant の応答により、問題の核心にたどり着きました。Ember 1.9.0 の時点で、複数のハッシュ ('#') を持つ URL がサポートされていることを報告できることをうれしく思います。

Jay Phelps が修正を提供し、最近では次のように述べています。


[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

scrollspy では、href の代わりに data-target を使用できるはずです。

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