Używam AngularJS i chciałbym przetworzyć dany #hash-fragment
w pasku adresu. Jednak - i to jest klucz - nie będę używał fragmentu hash do kodowania ścieżki. Ale wydaje się, że AngularJS nalega na interpretację tego w ten sposób.Czy mogę odzyskać kontrolę nad fragmentem skrótu adresu URL z AngularJS?
Na przykład, gdy html5Mode
jest wyłączona:
- danym adresem URL:
http://my.domain.com#my-hash
- zamienia się
http://my.domain.com/#/my-hash
i $location.hash()
będzie pusta.
A kiedy html5Mode
jest włączona:
- Dany URL:
http://my.domain.com#my-hash
- zostaje przekształcony
http://my.domain.com/my-hash
i $location.hash()
nadal będzie pusta.
AngularJS musi myśleć: "och, masz html5, pozwól mi usunąć ten skrót dla ciebie". Jak taktowny ...
Jedynym sposobem, aby dostać coś od $location.hash()
jest, gdy adres URL ma podwójne hash:
- Dla danego URL:
http://my.domain.com##my-hash
$location.hash()
jest wreszcie równa"my-hash"
i- jeśli również
$locationProvider.html5Mode(true)
jeden z skrótów jest usuwany z adresu URL.
Ale naprawdę potrzebuję prostego, pojedynczego znaku, aby pozostać nieprzetworzonym. czy to możliwe?
jaki jest przypadek użycia? czy rozważałeś użycie 'search' zamiast hash? – charlietfl
Jest to oryginalny przypadek użycia fragmentu skrótu: używam go, aby zwrócić uwagę na konkretną część bieżącego dokumentu. "search" jest zbyt szczegółowe i używane w innym celu. – mhelvens
Nie sądzę, że istnieją proste sposoby na odzyskanie kontroli #, ale masz alternatywy, aby skupić się na części dokumentu, http://www.benlesh.com/2013/02/angular-js-scrolling- to-element-by-id.html, http://stackoverflow.com/questions/14712223/how-to-handle-anchor-hash-linking-in-angularjs, http://docs.angularjs.org/api/ ng. $ anchorScroll – SoluableNonagon