Мне нужно установить нг щелкните событие, так что, что он загружает новую страницу, а затем, после загрузки страницы, прокручивается на точку привязки на этой странице. Я пробовал каждое предлагаемое решение на этом сообщении SO, но я не могу заставить его работать правильно.
Большинство этих решений сосредоточены вокруг прокрутки до привязки на уже загруженной странице. Мне нужно, чтобы прокрутка появлялась после загрузки новой страницы.
Вот мой код:
<div class="see-jobs-btn" ng-click="$event.stopPropagation();goToResultJobs(r)">See Jobs</div>
Это представляет собой кнопку внутри "карты профиля". Когда пользователь нажимает на карту, она переводит их на страницу профиля. Однако, когда они нажимают кнопку, нужно передать их в часть #jobs этой страницы профиля (отсюда $stopPropogation() перед goToResultJobs (r) в коде).
Вот как выглядит мой метод goToResultJobs.
$scope.goToResultJobs = function(result) {
var profileUrl = result.slug;
window.location = profileUrl;
};
Я попытался использовать $anchorScroll
и просто hardcoding в привязке в profileUrl
, но никто не работает. Я новичок в Angular, поэтому не знаю, что мне здесь не хватает.
ОБНОВЛЕНИЕ 1: попытка использования $timeout
Вот мой метод goToResultJobs
в моем ResultsCtrl, который запускается, когда пользователь нажимает кнопку:
$scope.goToResultJobs = function(result) {
var url = window.location + result.slug + '#jobs';
location.replace(url);
};
Загружает путь /name#jobs
, который вызывает ProfileCtrl ниже:
app.controller('ProfileCtrl', ['$scope', '$http', '$timeout', '$location', '$anchorScroll',
function($scope, $http, $timeout, $location, $anchorScroll) {
if(window.location.hash) {
$timeout(function() {
console.log('TEST');
// $location.hash('jobs');
// $location.hash('jobs');
$anchorScroll();
}, 1000);
};
}]);
Эта настройка работает, поскольку TEST
отображается только на консоли при нажатии кнопки "Задания", но не тогда, когда пользователь просто нажимает на профиль. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что страница начинает загружаться, а путь в строке url изменяется на /name#jobs
, но до завершения загрузки страницы jobs
удаляется из URL-адреса. Поэтому, когда вызывается $anchorScroll()
, в хеше нет метки привязки для прокрутки.