Мне нужно прокрутить активное изображение вверх, используя директиву angularjs. Когда я пытался обработать с элементом [0].offset() его ошибку бросания.
Объяснение:
Здесь я жестко кодирую активный элемент до 5 в строке. Не нужно кодировать для этого, поскольку я мог бы установить динамический активный элемент на основе URL-адреса. Все, что мне нужно, - это изображение 5, которое должно прокручиваться вверху на боковой панели, поскольку это активный элемент
myApp.controller('sidebarController', function($scope){
$scope.images=[];
for(var i = 0; i< 10; i++){
temp = {url:'http://lorempixel.com/400/200',active:false}
$scope.images.push(temp)
}
$scope.images[5].active=true; // hardcoding the 5th element to be active.
})
Вот мой код директивы.
myApp.directive('scrollToTop',function($timeout){
return {
restrict:'A',
link:function(scope, element, attributes){
if(attributes.active == true || attributes.active =='true'){
$timeout(function () {
console.log(element)
//angular.element(element)[0].scrollTop = element[0].offset().top;// commented it as it was throwing error.
});
}
}
}
})
Вот мой jsfiddle
Через 2 дня кодирования отправился с anchorScroll. Надеюсь, это единственное решение. Смутил, что scrollTop для?
Вот мой обновленный код
myApp.directive('scrollToTop',function($timeout, $anchorScroll, $location){
return {
restrict:'A',
link:function(scope, element, attributes){
if(JSON.parse(attributes.scrollToTop.toLowerCase())){
$location.hash(attributes.id);
$anchorScroll();
}
}
}
})