AngularJS中的ScrollTo函数

我正在尝试快速导航以使其正常工作。它漂浮在侧面。当他们单击链接时,会将他们带到页面上的该ID。我正在遵循Treehouse的本指南。这就是我要滚动的内容:

$("#quickNav a").click(function(){

var quickNavId = $(this).attr("href");

$("html, body").animate({scrollTop: $(location).offset().top}, "slow");

return false;

});

我最初将其放置在之前</body>。但是我似乎遇到了一种竞争情况,在quickNav编译之前就已经触发了这种情况(它ng-

hide放在上面,不确定是不是引起了它-但它在DOM内)。

如果我在控制台中运行该代码块,则滚动将按预期进行。

我认为将其移入控制器会更有效-或更可能在指令中。但是我没有那么幸运。

回答:

这是一个简单的指令,单击后将滚动到一个元素:

myApp.directive('scrollOnClick', function() {

return {

restrict: 'A',

link: function(scope, $elm) {

$elm.on('click', function() {

$("body").animate({scrollTop: $elm.offset().top}, "slow");

});

}

}

});

演示:http :

//plnkr.co/edit/yz1EHB8ad3C59N6PzdCD?p=preview

要获取有关创建指令的帮助,请查看视频,网址为http://egghead.io,从#10“第一个指令”开始。

:要使其滚动到href指定的特定元素,只需选中attrs.href

myApp.directive('scrollOnClick', function() {

return {

restrict: 'A',

link: function(scope, $elm, attrs) {

var idToScroll = attrs.href;

$elm.on('click', function() {

var $target;

if (idToScroll) {

$target = $(idToScroll);

} else {

$target = $elm;

}

$("body").animate({scrollTop: $target.offset().top}, "slow");

});

}

}

});

然后,您可以像这样使用它:<div scroll-on-click></div>滚动到单击的元素。或<a scroll-on-click

href="#element-id"></div>滚动到带有ID的元素。

以上是 AngularJS中的ScrollTo函数 的全部内容, 来源链接: utcz.com/qa/397770.html

回到顶部