3
上下文:我有一个左侧菜单(导航器)和右侧面板(内容)divs。导航器中的每个项目都链接到右侧面板中其部分的ID。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>
JS:
范围父:
$scope.setCurrentItem = function (currentItemID){
$scope.currentItemID = currentItemID;
}
范儿:
$scope.$watch('currentItemID', function (divDestinyID) {
$location.hash(divDestinyID);
$anchorScroll();
});
问题是整个页面滚动。
有什么想法?
谢谢!
非常感谢您的回答。我明白你在说什么,这太棒了! 这是一个很好的工作,但由于任何原因它不会滚动。在用newId进入onIdChange时,它创建了很好的idElement(甚至在调试器中点击它在DOM中加入),但滚动不起作用... 我看到它进入$ watch函数几次,返回id ,但没有任何反应。我在其他帖子中看到了一个计时器是必要的。 我试图把它,但什么都没有...... 对不起,如果它是明显的东西,我没有看到,我star Ang着角... – Xocema
所以你包装动画与一个'$超时'?例如'$ timeout(function(){/ * animate code here * /});' – BGilman
我终于用css把固定位置放在左边的导航栏(左侧面板)上,并把整个div放入iframe 。感谢您的帮助! – Xocema