Дополнительно
Функция ScrollTo на AngularJS
Я'м пытаясь получить быстрый навигация для правильной работы. Это'плавающего на стороне. При нажатии на ссылку, он принимает их, что ID на странице. Я'м после этого руководство из Treehouse. Это то, что у меня есть для прокрутки:
$("#quickNav a").click(function(){
var quickNavId = $(this).attr("href");
$("html, body").animate({scrollTop: $(location).offset().top}, "slow");
return false;
});
Я изначально положил его перед в </тело и GT;
. Но мне кажется, нарваться на гонки, где была перестрелка перед quickNav составлен (в нем есть `НГ-скрыть, размещенные на нем, не уверен, если это's причиной - но это в дом).
Если я запускаю этот кусок кода в консоли, то прокрутка работает, как ожидалось.
Я полагал, что это'd быть более эффективным, чтобы переместить это в контроллер - или, скорее, в директиве. Но я'м не имея достижении удачи. Как я могу получить этот блок кода для работы с AngularJS?
69
9
Вот простая директива, которая будет выделите элемент на нажмите:
Демо: http://plnkr.co/edit/yz1EHB8ad3C59N6PzdCD?p=preview
За помощью в создании директив, проверить видео на http://egghead.io, начиная с #10 "первый директивы и".
редактировать: чтобы сделать его прокрутки для конкретного элемента, указанного в рот, просто проверить у attrs.Солар`.
Затем вы можете использовать его как это:
<свиток-на кнопку див></дел>
для прокрутки к элементу кликнули. Или в<свиток-на-щелкните href=" и#элемент-ИД" и></дел>
чтобы перейти к элементу с ID.Это лучший директивы в случае, если вы хотите использовать его:
вы можете перейти к любому элементу на странице:
Использования (например, нажать на div 'назад-вверх' будет выделить код прокрутка-вверх):
Это's также поддерживается в Chrome,Firefox,сафари и IE вызвать в HTML,элемент Body .
Для того, чтобы анимировать на определенный элемент внутри контейнера прокрутки (фиксированный див)
Угловое решение, используя $anchorScroll http://www.benlesh.com/2013/02/angular-js-scrolling-to-element-by-id.html:
А вот бухнуть: http://plnkr.co/edit/xi2r8wP6ZhQpmJrBj1jM?p=preview
И если вы заботитесь о чистом JavaScript-решение, вот один:
Вызвать runScroll в коде с родительского контейнера ID и идентификатор целевого свиток:
Ссылка: https://stackoverflow.com/questions/8917921/cross-browser-javascript-not-jquery-scroll-to-top-animation
Я использовал Эндрю Джослин'ы ответ, который прекрасно работает, но срабатывает угловой изменении маршрута, который создан нервный глядя прокрутить для меня. Если вы хотите избежать изменения маршрута,
Спасибо за пример Энди, это было очень полезно. Я закончил реализация немного другая стратегия, поскольку я занимаюсь разработкой одной странице прокрутки и не хочу угловой для обновления при использовании hashbang URL-адрес. Я также хочу сохранить назад/вперед действий в браузере.
Вместо того, чтобы использовать директивы и хэш, я использую $объем$.смотреть на $расположение.поиск и получение целевой оттуда. Это дает хороший тег чистый якорь
в
<а НГ-с href=" и#/?=myElement на" прокрутки;>моя стихия</а>
Я запер посмотреть код в моей декларации модуля в app.js вот так:
Предостережение с выше кода является то, что если вы получаете доступ к URL-адрес непосредственно от другой маршрут, то дом не может быть загружен во времени для jQuery'ы $цель.смещение() вызова. Раствор для гнезда этот код в $viewContentLoaded наблюдателя. Окончательный код выглядит примерно так:
Проверял С хрома и ФФ
Как насчет угловые-свиток, Это'ы активно поддерживается и нет зависимостей на jQuery..
Еще одно предложение. Одна директива с селектора.
HTML-код:
Угловой:
Также обратите внимание $anchorScroll
очень четкий ответ, используя только в AngularJS, никаких jQuery и зависит
в HTML где-то на дне
<назад-топ и GT;текст</бэк-топ>
в HTML где-то на вершине в
<див ИД=то"сверху" и></див>
в ваших JS: