eri*_*ons 7 angularjs angular-ui-bootstrap twitter-bootstrap-3
选择选项卡会导致页面随机滚动,例如选择选项卡可以将页面几乎一直滚动到顶部,然后我必须向下滚动才能看到选项卡的内容,如果我选择另一个选项卡页面再次滚动.
标签的内容大小可变,有些元素比其他元素多,所以它们自然具有不同的高度,但我不确定这是否是随机页面滚动的原因.
我尝试了一些jquery来禁用链接默认操作而没有运气.
$(function () {
$('body').on('click', 'a[ng-click="select()"]', function (event) {
event.preventDefault();
});
});
Run Code Online (Sandbox Code Playgroud)
另一个丑陋的解决方案是我将tabset包装在div中并在div上设置一个高度
<div class="col-md-12" id="profile-nav-tabs" style="
height:500px;
overflow-y: auto;
overflow-x:hidden
">
<tabset justified="true">
<tab heading="{{::strings.profile}}">
<br />
<div ng-include="'tab-profile.php'"></div>
</tab>
.... more tabs
</tabset>
</div>
Run Code Online (Sandbox Code Playgroud)
小智 0
我遇到了同样的问题。经过跟踪代码,我认为这是tabset
指令的一个错误。
解决方案是(逐步):
tabset.html
、删除[ng-class="{active: tab.active}"]
[tab]
指令的scope.$watch('active')
处理程序。使用angular.element
'saddClass
和removeClass
函数来添加/删除active
类。
link: function(scope, elm, attrs, tabsetCtrl, transclude) {
scope.$watch('active', function(active) {
/*if (active) {
tabsetCtrl.select(scope);
}*/
var idx = tabsetCtrl.tabs.indexOf(scope);
var elmPane = angular.element(elm[0]).parent().next().children()[idx]; //li->ul->div(tab-content)->div(tab-pane)
if (active) {
tabsetCtrl.select(scope);
angular.element(elmPane).addClass('active');
}
else {
angular.element(elmPane).removeClass('active');
}
});
Run Code Online (Sandbox Code Playgroud)