AngularJS锚点第二次单击不工作
这是我的AngularJS锚点第二次单击不工作,angularjs,anchor,Angularjs,Anchor,这是我的 单击转到一个的末尾它将导航到id为的div 第二次点击相同的链接,它不会做任何事情 我做错了什么?或者这和角有关 注意:这将是黑客使用点击事件,这应该工作我寻找直接的解决方案 使用角度和路线版本1.5.5 *新增赏金试试这个: 到一的末尾 这是一个。 var-app=angular.
到一的末尾
这是一个。
var-app=angular.module(“myApp”[“ngRoute”]);
app.run(函数($rootScope、$location、$anchorScroll){
//更改路线后,滚动至正确的元素。
//$rootScope.$on(“$routeChangeSuccess”,函数(newRoute,oldRoute){
//log(“称为routeChangeSuccess”);
//如果($location.hash())$anchorScroll();
// });
$rootScope.goTo=函数(值){
$location.hash(值);
};
});
app.config(函数($routeProvider,$locationProvider){
$routeProvider
.当(“/”时{
templateUrl:“/one.html”
})
.when(“/one”{
templateUrl:“/one.html”
});
$locationProvider.html5Mode(true).hashPrefix(“!”);
});
希望这能有所帮助。我检查了您的plunkr,我注意到在提供锚定标记时,您没有指定路线,因此当我将特定行更改为此时,“$routeChangeSuccess”不会触发
<a href="/one/#one"> go to end of one </a>
我的锚卷轴工作正常
解决方案:
如果您还没有考虑到HTML5模式在路由方面的挑战,请注意。您基本上需要在
位置更改上触发主播克隆()。为此,您无需检查$routeChangeSuccess
。您可以直接使用$locationChangeStart
$rootScope.$on('$locationChangeStart', function(event) {
$anchorScroll();
});
为了同时使用$routeChangeSuccess
或$locationChangeStart
两种方法,您需要按如下方式指定锚定
标记的routename
<a href="/one/#one"> go to end of one </a>
已更新请查看发布的答案。希望有帮助。不,我不想使用click Event。问题是,只有在位置发生更改时才向下滚动,但在您的情况下,情况并非如此,因为您总是转到#one。这是。您需要使用“单击事件”来获取所需内容,或者在url中添加一些uuid以保证不平等性。@如果您两次单击同一链接,这也不会起作用。若你们改变路线,预计不会有问题是的,这是关键。您需要更改路由-尝试附加一些动态哈希,如当前时间戳。这应该行得通。你对这个关键点有什么参考资料吗?我认为这不是把时间戳放在现场的正确方法。。如果我们有@Peru检查此链接以查看不同视图的多个视图,我们如何处理这种情况。对于不同的局部视图,请检查此链接,它确实有帮助。。你拿到赏金了吗
$rootScope.$on('$locationChangeStart', function(event) {
$anchorScroll();
});
<a href="/one/#one"> go to end of one </a>