パネルが開いたら、ちょうどクリックされたパネルの ".panel-title"にスクロールバックする必要があります。AngularJS/ui-bootstrapアコーディオン - クリック時にアクティブ(オープン)アコーディオンの上にスクロール
.directive('scrollTop', scrollTop);
function scrollTop() {
return {
restrict: 'A',
link: link
};
}
function link($scope, element) {
$scope.collapsing = false;
$scope.$watch(function() {
return $(element).find('.panel-collapse').hasClass('collapsing');
}, function(status) {
if ($scope.collapsing && !status) {
if ($(element).hasClass('panel-open')) {
$('html,body').animate({
scrollTop: $(element).offset().top - 20
}, 500);
}
}
$scope.collapsing = status;
});
}
そして、私が使用するようになっていたHTMLで:私は、私は、そのような(this siteからこれを得た)としてこれを行うには、ディレクティブを作成することができます知っている
<div uib-accordion-group is-open="status.openPanel" scroll-top></div>
をしかし、これはしていないようです作業。 2番目のパネルをクリックすると1番目と2番目のパネルが開き、3番目のパネルを開くときには上にスクロールしません。
クリックしたパネルの ".panel-title"にスクロールするだけでいいです。パネルの内容がかなり長くなってしまって、パネルを開いたときに大部分の人が情報の上にスクロールしたいと思うと、これはとても難しいようです。
私はここに他の投稿を見ましたが、AngularJSを扱っていないようです。 "ui-bootstrap-tpls-2.1.3"
EDIT -を使用しています。
ご協力いただきまして誠にありがとうございます。
を働くことは、あなたが 'shown'と' hidden'イベントのリスニングではなく、あなたのウォッチャーを使用して検討していますか?あなたのウォッチャーがすぐに発砲していると思う。あなたの関数にブレークポイントを設定するか(または警告やコンソールログをそこに入れたり、ブートストラップアニメーションの速度をタイミングを誇張するためにはるかに遅いものに編集する)。あなたが見つけたものを報告してください。 – adamdport