2014-12-03 22 views
6

Burada örnek bir düzen var. Bölüm yüksekliğinin, kullanıcının bakış açısına eşit veya eşit olduğu varsayılır.Açısal yönlendirici yönünü değiştir kaydırma durumu

Tüm bu bölümler bir görünümde yerleştirilir. Ayrıca, kullanıcı URL'leri üzerine tarayıcı URL'sini dinamik olarak değiştirmek ve bölümlerden birine ulaşmak istiyorum: Kullanıcı ilk kez 'u (açısal html5 modunu kullanmayan) görüyor, sonra bir sayfayı aşağı kaydırıyor ve section2 öğesi kullanıcının görüş alanında görünür hale geldiğinde http://example.com/#/section2'u görmeli. . Ayrıca kullanıcı bağlantıyı kopyalarsa, açıldığında, http://example.com/#/section2 Sayfayı bu bölüme kaydırmam gerekir.

Şu anda kullanıcı tarafından görüntülenen bölümün hangisi olduğunu tespit etmek için angular-inview yönergesini kullanıyorum.

Şimdi parametre üzerinden yaptık:

$state.go($state.current, { 
    section: $scope.activeSectionId // e.g. 'section2' 
}, { 
    notify: false, // do not reload page 
    location: 'replace' // do not save as new history entry 
}); 

Ama bu şekilde sessiz iyi ve URL dostu aramıyorsanız değildir. Ayrıca, ui-sref ile bir bağlantıyı tıklattığımda, ilk kez sayfa atlayışları için, bir süre için inview bölümünü değiştirir ve yukarıda belirtilen kodu tetikler, böylece aslında bir ui-sref'e göre gezinmez. Ama bir dahaki sefere tıklıyorum - hepsi iyi çalışıyor (bu sayfa yeniden yüklenmesinden hemen sonra gerçekleşir).

Birisi bunu mümkün kılarsa, daha iyi nasıl yapılmasını önerebilir?

cevap

2

$ state.go ($ state.current) olduğunda, durumu neden değiştirmek istersiniz? Belki de html5 hakkında emin değil, anchorScroll kullanın.

https://docs.angularjs.org/api/ng/service/$anchorScroll

DÜZENLEME:

Üzgünüm, fare kaydırma hakkında kaçırdı. Bu cevabı https://stackoverflow.com/a/14717011/1603188 ve $ location.hash (id) kullanımını kontrol edin;

+1

Çapa kaydırma kullanımı, mousewheel, klavye vb. Ile doğal kaydırmanın durumunu değiştirmek için sorunu çözmeyecektir. Yalnızca bazı bağlantı veya düğmelerdeki tıklatmayla durumu değiştirir. – m03geek

+0

Evet, konum karma hile yapabilir, ancak başka bir # url üretiyor ve html5mode'ye geçersem (hash) da URL'de kalır. Benim temel amacım devletin değişmesini sağlamak ve nihayetinde url'deki hashtan kurtulmaktır. Ama şimdilik anladığım kadarıyla bunu açık bir şekilde yapmak imkansız, bu yüzden yeni cevaplar görünmezse sizinkileri kabul ediyorum, çünkü bu sorunu en azından kısmen çözüyor. Teşekkürler. – m03geek

İlgili konular