Я ищу, чтобы пользователь щелкнул ссылку на странице, это вызовет stateChange и приведет их к новому состоянию. то, что я хочу достичь, - это когда состояние закончено, загрузив его, затем прокручивается до привязки на странице, указанной ссылкой на предыдущей странице.AngularJS: Автоматическая прокрутка до точки привязки после изменения состояния
делать это, я использую комбинацию пропускания $ stateParam через щ-sref так:
<a ui-sref="stateParent.stateChild({id: 'practiceParam'})">goToPage</a>
тогда, когда страница будет достигнуто есть DIV сидит на нем с директивой прикрепленного что активируется в $ viewContentLoaded, поэтому DOM отображается, и я могу найти идентификатор. HTML-ДИВ выглядит следующим образом:
<div scroll-after-load ></div>
и моя директива прокрутки выглядит следующим образом:
angular.module('app').directive('scrollAfterLoad', function() {
return {
restrict: 'A',
link: function(scope, $elm, attrs, $stateParams) {
scope.$on('$viewContentLoaded', function() {
console.log('scrollAfterLoad Directive Loaded, $stateParams are: ', $stateParams);
var idToScroll = attrs.href;
var $target;
if (idToScroll) {
$target = $(idToScroll);
// the -50 accounts for the top navbar which is fixed on the page and removed from pageflow
$("html,body").animate({scrollTop: $target.offset().top - 50}, "slow");
}
});
}
};
});
я не беспокоил с установкой HREF на DIV пока я не могу получить доступ к переданному параметру, я Я обращаюсь к нему неправильно? Я также попытался использовать более стандартный state.go() для передачи stateParam, но мой результат по-прежнему равен нулю.
Как только я могу передать государственный шаблон, Идея - это просто добавить href к параметрам, которые вводятся в div на вновь загруженной странице, и автопрокрутить в другой div на этой странице с идентификатором, который соответствует моему переданному параметру.
Кроме того, обратите внимание, что на моем экране ii-auto у меня есть autoscroll для true, поэтому страницы автоматически загружаются вверху, мне нравится это поведение, и именно по этой причине мне нужно состояние для полной загрузки до активации scoll ,
интересное решение, но id скорее избегает большей зависимости в моем проекте и пишет для него простую директиву. – Eolis