gpt4 book ai didi

javascript - AngularJS - 在两个容器内滚动 -anchorScroll

转载 作者:行者123 更新时间:2023-11-28 12:28:23 24 4
gpt4 key购买 nike

我的页面有两列固定高度。每列中的项目都是 ng-repeated。

如何在每列中滚动到某个 id? AngularJS 可以做到这一点吗?

example

代码

<div>
Scroll to a position
Column #: <input style="width: 20px;">
Item #: <input style="width: 20px;">
</div>

<div class='column'>Column one
<div id="col-1-{{$index}}" class='item' ng-repeat='item in itemsOne track by $index'>
{{$index}} ..... {{item}}
</div>
</div>
<div class='column'>Column two
<div id="col-2-{{$index}}" class='item' ng-repeat='item in itemsTwo track by $index'>
{{$index}} ..... {{item}}
</div>
</div>

JS:

app.controller( 'myCtrl', [ '$scope', function ( $scope ){

$scope.value = 'test';
$scope.itemsOne = [];
$scope.itemsTwo = [];

for(var i=0; i<10; i++){
$scope.itemsOne.push(makeSentence());
$scope.itemsTwo.push(makeSentence());
}

function makeSentence() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

for( var i=0; i < Math.random() * 200; i++ ){
for( var i=0; i < Math.random() * possible.length; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
text += " ";
}
//console.log(text);
return text;
}

$scope.scrollMeTo = function(column, row){
// scroll me to an area in a column
};

}] );

http://plnkr.co/edit/WYtntRagJdQoK7k6fAPc?p=preview

最佳答案

我改变了你的plunkr以使其工作,还有很大的改进空间,但请注意,当你需要处理DOM中的事情时,你必须始终使用指令来做到这一点,就像我所做的那样:

app.directive('autoScrollTo', function () {
return function(scope, element, attrs) {
scope.$watch(attrs.autoScrollTo, function(value) {
if (value) {
var pos = $("#" +attrs.prefixId +value, $(element)).position().top + $(element).scrollTop() - $(element).position().top;
$(element).animate({
scrollTop : pos
}, 1000);
}
});
}
});

查看它正在运行:http://plnkr.co/edit/2gb8ZdZ5DPanRBVQvTwa?p=preview

希望有帮助。

关于javascript - AngularJS - 在两个容器内滚动 -anchorScroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com