Контекст: у меня есть левое меню (навигатор) и правые (контентные) div. Каждый элемент навигатора привязан к идентификатору его раздела в правой панели.AngularJS - контейнер прокрутки div при нажатии на элемент в другом div
Проблема: я пытаюсь прокрутить правую панель к соответствующему разделу при нажатии на пункт меню с панели навигации.
Я делаю это с anchorScroll() и locator.hash() функции. Он работает, но он прокручивает всю страницу (навигация и контент).
Я создал два контроллера: один для родителя (включая навигатор) и другой для контейнера (тот, который я хочу прокрутить). Когда я нажимаю элемент в меню, я изменяю переменную в пределах области.
Затем из детской сферы, я наблюдаю эту переменную, выполняя свиток с
HTML:
html:
<!-- Navigation Panel -->
<div id="helpNavigatorPanel">
<ul>
<li ng-repeat="(value, item) in list" ng-click="setCurrentItem (item.title)">
<a style="helpNavigationItems" href="#">{{item.title}}</a>
</li>
</ul>
</div>
<div id="helpContentPanel"ng-controller="contentHelpController" >
<div id="scrollablePanel">
<!-- List of help elements -->
<ul>
<li ng-repeat="some in list">
<div id="{{some.title}}" style="margin-top: 3px; padding: 10px; border: 1px solid lightGrey;">
...
</div>
</div>
</li>
</ul>
</div>
</div>
ЯШ:
Scope родительскими:
$scope.setCurrentItem = function (currentItemID){
$scope.currentItemID = currentItemID;
}
Сфера охвата ребенка:
$scope.$watch('currentItemID', function (divDestinyID) {
$location.hash(divDestinyID);
$anchorScroll();
});
Проблема в том, что вся страница прокручивается.
Любая идея?
Спасибо!
Большое спасибо за ваш ответ. Я понимаю, что вы говорите, и это здорово! Это хорошая работа, но по какой-либо причине она не прокручивается. Входит в onIdChange с newId, он хорошо создает idElement (даже щелкнув в отладчике, он подключен в DOM), но прокрутка не работает ... Я вижу, что он несколько раз вводит в функцию $ watch, возвращающую идентификатор , но ничего не происходит. Я видел в других сообщениях таймер. Я попытался поместить его, но ничего ... Простите, если это что-то очевидное, что я не вижу, я начинаю с Angular ... – Xocema
Так вы обернули анимацию '$ timeout'? Например, '$ timeout (function() {/ * анимировать код здесь * /});' – BGilman
Наконец-то мне удалось с помощью css поместить фиксированную позицию в навигацию (левая панель) слева и поместить весь div в iframe ,Спасибо вам за помощь! – Xocema