我正在制作一个分页应用程序,用户可以在同一窗口中切换低谷页面(页面显示在彼此下方)。每当有人更改页面时,我希望窗口滚动正确的页面
这是我的页面指令:
.directive('page', function () {
return {
restrict: "E",
transclude: true,
template: '<div ng-transclude></div>',
link: function(scope, element, attrs) {
/*
* Better in controller, now the function has to be evaluated for every directive.
* */
scope.$on('pageChanged', function(event, page) {
if (parseInt(attrs.number) === page) {
if (page === 1) {
window.scrollTo(100, element[0].offsetTop - 110);
}
else {
window.scrollTo(0, element[0].offsetTop - 60);
}
}
});
}
}
这可行,但现在每个指令都侦听 pageChanged 事件并采取相应措施。我宁愿只听控制器,让控制器将窗口滚动到正确的页面。(这样只需要评估一个函数)。
$scope.$on('pageChanged', function (event, pageNr) {
$scope.currentPage = pageNr;
/*
* Scroll to the right page directive here
**/
});
但是要做到这一点,我需要访问控制器中的页面元素,有没有办法做到这一点?
我还在寻找一种可以在用户滚动窗口时将 currentPage 更改为正确页面的方法。