Этот код должен медленно прокручиваться на странице. Я использую AngularJS 1.4, и у меня есть проблема с интеграцией кода.Директива AngularJS DOM-манипуляция не работает
Точнее, если я создаю простой исходный файл JS с этим кодом, он работает очень хорошо, без проблем. Но я читал, что манипуляции с DOM должны оставаться в директиве. Проблема в том, что если я интегрирую в свою директиву с помощью функции ссылки (scope, element, attrs), мой код не будет работать должным образом.
Я попытался поместить его в функцию angular.run() и в функцию angular.controller(), но с тем же побочным эффектом.
Как я могу интегрировать этот код в свою угловую структуру?
PS: Этот код должен работать перед другой обработкой.
function changeActiveMenu(targetTag) {
var rmClass = $('[name="li-menu"]');
var addClass = $('#' + targetTag);
rmClass.removeClass('active');
addClass.addClass('active');
}
function scrollToTag(targetTagId) {
var targetTag = $('[id="'+ targetTagId +'"]');
$('html, body').animate({ scrollTop: targetTag.offset().top }, 'slow');
}
$window.onload = function() {
$('[name=home-page]').click(function(){
scrollToTag('home');
changeActiveMenu('li-home-page');
});
$('[name=search-sal]').click(function(){
scrollToTag('search-for-salaries');
changeActiveMenu('li-search-sal');
});
$(window).bind("scroll", function() {
var sec1 = $("#home").offset().top;
var sec2 = $("#search-for-salaries").offset().top - 300;
if ($(this).scrollTop() >= sec1){
changeActiveMenu('li-home-page');
}
if ($(this).scrollTop() >= sec2){
changeActiveMenu('li-search-sal');
}
});
$('.chgCursor').on('mouseover', function() {
$(this).addClass('cursor-pointer');
});
$('.chgCursor').on('mouseout', function() {
$(this).removeClass('cursor-pointer');
});
console.log(element);
};
Спасибо за помощь, но я нашел проблему из своего кода :) – Doro