컨텍스트 : 왼쪽 메뉴 (탐색기)와 오른쪽 패널 (내용) div가 있습니다. 네비게이터의 모든 항목은 오른쪽 패널의 섹션 ID에 연결됩니다.AngularJS - 다른 div의 항목을 클릭 할 때 div 컨테이너 스크롤
문제점 : 탐색 패널에서 메뉴 항목을 클릭 할 때 해당 섹션으로 오른쪽 패널을 스크롤하려고합니다.
내가 anchorScroll으로 그 일을하고있다() 및 locator.hash() 기능. 작동하지만 전체 페이지 (탐색 및 내용)를 스크롤합니다.
나는 부모 (네비게이터 포함)와 컨테이너 (스크롤하려는 사람)를위한 두 개의 컨트롤러를 만들었습니다. 메뉴에서 항목을 클릭하면 범위 내의 변수가 변경됩니다.
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>
JS :
범위 부모 :
$scope.setCurrentItem = function (currentItemID){
$scope.currentItemID = currentItemID;
}
그런 다음 아이의 범위에서, 나는
HTML로 스크롤을 수행, 그 변수를 시청하고 범위 하위 :
$scope.$watch('currentItemID', function (divDestinyID) {
$location.hash(divDestinyID);
$anchorScroll();
});
문제는 페이지 전체가 스크롤된다는 것입니다.
아이디어가 있으십니까?
감사합니다.
답변 해 주셔서 대단히 감사합니다. 나는 네가하는 말을 이해한다. 좋은 작품이지만 어떤 이유로 든 스크롤하지 않습니다. In은 newId를 사용하여 onIdChange로 들어가고, 심지어 idElement를 생성합니다 (DOM에있는 디버거를 클릭하더라도). 스크롤이 작동하지 않습니다 ... ID를 반환하는 $ watch 함수에 여러 번 입력됩니다. ,하지만 아무 일도 일어나지 않습니다. 다른 게시물에서 타이머가 필요하다는 것을 알았습니다. 나는 그것을 넣으려고했으나 아무 것도 ....... 내가 볼 수없는 것이 분명하다면 미안 해요, 저는 Angular ... – Xocema
으로 애니메이션을 감쌌습니까? '$ timeout'? 예를 들어'$ timeout (function() {/ * animate code here * /}); – BGilman
마지막으로 css에서 왼쪽의 네비게이션 (왼쪽 패널)에 고정 위치를두고 if div .도와 주셔서 감사합니다! – Xocema