2013-11-28 5 views
14

私はAngularJSを使用していて、アドレスバーに与えられた#hash-fragmentを処理したいと思います。しかし、 - そしてこれは私がパスをエンコードするためにハッシュフラグメントを使用していないますキー - です。しかし、それはAngularJSがそれをそのように解釈することを主張しているようです。例えばAngularJSからURLハッシュフラグメントの制御を取り戻すことはできますか?

html5Modeが無効になっている:

  • 与えURL:http://my.domain.com#my-hash
  • http://my.domain.com/#/my-hashになっている、と
  • $location.hash()は空になります。

そしてhtml5Modeが有効になっている場合:

  • 与えURL:http://my.domain.com#my-hash
  • http://my.domain.com/my-hashになっている、と
  • $location.hash()
  • はまだ空になります。

AngularJSは考えている必要があります:「ああ、あなたはhtml5を持っています。指定されたURLについて

  • :URLは二重のハッシュを持っているとき、どのように配慮し...

    $location.hash()から何かを得るための唯一の方法はあるhttp://my.domain.com##my-hash

  • $location.hash()"my-hash"に最終的に等しく、
  • $locationProvider.html5Mode(true)のハッシュの1つがURLから削除された場合。

しかし、私は本当に未処理のままにするための簡単な単一のハッシュ文字を必要としています。これは可能ですか?

+0

ユースケースとは?あなたはハッシュではなく 'search'を使うことを考えましたか? – charlietfl

+3

これは、ハッシュフラグメントの元の使用例です。現在のドキュメントの特定の部分に注意を集中させるために使用しています。 'search'はあまりにも冗長で、別の目的のために使われます。 – mhelvens

+0

私は#のコントロールを取り戻すために任意の簡単な方法があるとは思わないが、あなたは文書の一部に集中する選択肢を持っています、http://www.benlesh.com/2013/02/angular-js-scrolling-要素ごとid.html、http://stackoverflow.com/questions/14712223/how-to-handle-anchor-hash-linking-in-angularjs、http://docs.angularjs.org/api/ ng。$ anchorScroll – SoluableNonagon

答えて

14

#は角APIドキュメントページ上で十分動作するようです。だから少しスヌーピングとテストで私はそれを見つけた

app.config(function($locationProvider) { 
    $locationProvider.html5Mode(true).hashPrefix('!'); 
}); 

は違いがあります。

+0

ああ、hashPrefix!振り返ってみると、私はこれを試したことがないのです。 :-)これは理想的ではありません。なぜなら、ハッシュフラグメントの開始時にもう使用できない文字が1つ残っているからです。しかし、私はこれが重要ではない文字を見つけることができると確信しています。ありがとう! – mhelvens

+0

誰かがhtml5Modeを使いたくない場合はどうすればいいですか? –

+0

'hashPrefix'は非html5モードにも適用されます(HTML5以外のブラウザではフォールバックできる必要があります)。さらに例はhttps://docs.angularjs.org/guide/$locationを参照してください。ドキュメンテーション – towr

関連する問題