我有一个可滚动的div,里面有一系列元素。当我使用element.offsetTop
时,我在Safari和Chrome / Firefox中获得了不同的长度。
我正在使用angular 2 AfterContentInit Hook。
ngAfterViewChecked() {
this.ticketsService.getData().subscribe(() => {
this.zone.onMicrotaskEmpty.first().subscribe(() => {
let scrollPosition = calculateElementHeight(this.tickets.toArray()[1].nativeElement);
console.log(scrollPosition);
this.scrollable.setScrollPosition(scrollPosition);
});
});
}
Safari日志:137 x2,137,92 x2,92 x2
Chrome / Firefox日志:92 x2,92 x2,92
我该如何解决?
PD:jQuery解决方案无效。
PD2:我可以使用AfterViewChecked,因为当用户使用滚动时,这个应该有效,所以这个事件应该停止。这就是问题,我不知道这个事件应该如何停止。
答案 0 :(得分:0)
如果在AngularJS中完成,请尝试聆听$viewContentLoaded:
$scope.$on('$viewContentLoaded', function(event, args) {
// do what you want to do
});
或者:
$scope.$watch('$viewContentLoaded', function()
{
alert("blah");
});
Or Angular 2:
ngAfterViewInit() {
this.ticketsService.getData().subscribe(() => {
this.zone.onMicrotaskEmpty.first().subscribe(() => {
let scrollPosition = calculateElementHeight(this.tickets.toArray()[1].nativeElement);
console.log(scrollPosition);
this.scrollable.setScrollPosition(scrollPosition);
});
});
}