私は、同じウィンドウ内のトラフページを切り替えることができるページ付けアプリケーションを作っています(ページはお互いの下に表示されます)。誰かがページを変更するたびに、私はこれは私のpageディレクティブでウィンドウが右のページをスクロールするAngularJS:コントローラの指示要素を使用する
をしたい:
.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イベントをリッスンし、それに応じて動作します。私はコントローラでリッスンし、コントローラがウィンドウを正しいページにスクロールさせることを好みます。 (このようにして、1つの関数のみを評価する必要があります)。
$scope.$on('pageChanged', function (event, pageNr) {
$scope.currentPage = pageNr;
/*
* Scroll to the right page directive here
**/
});
これを行うには、コントローラのページ要素にアクセスする必要があります。これを行う方法はありますか?
また、ユーザーがウィンドウをスクロールしたときに、現在のページを正しいページに変更できるメソッドも探していました。
私は同意しますが、正確なページに行く方法を正確に選択することはできますか?これが動作するには、コントローラに別のページ要素が必要なのですか?すべてのページには別個のコントローラがあるので? – arnoutaertgeerts