Я хочу, чтобы пользователь щелкнул ссылку на странице, это вызовет изменение состояния и приведет их к новому состоянию. чего я хочу добиться, так это того, что когда состояние завершает загрузку, оно затем прокручивается до привязки на странице, указанной ссылкой на предыдущей странице.
Для этого я использую комбинацию передачи $stateParam через ui-sref следующим образом:
<a ui-sref="stateParent.stateChild({id: 'practiceParam'})">goToPage</a>
затем, когда страница достигнута, на ней находится div с прикрепленной директивой, которая активируется на $viewContentLoaded, поэтому DOM отображается, и я могу искать идентификатор. HTML div выглядит так:
<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 на этой странице с идентификатором, который соответствует моему переданному параметру.
Кроме того, примечание: в моем пользовательском интерфейсе для автопрокрутки установлено значение true, поэтому страницы автоматически загружаются вверху, мне нравится такое поведение, и именно поэтому мне нужно, чтобы состояние завершило загрузку до активации прокрутки.