我有一个带有多个标签的html页面,根据Angular中的某些条件,可以禁用其中的一个或多个标签。 (其中至少有一个将始终启用)
<tabset>
<tab ng-disabled="vm.disableTab(1)">
<tab ng-disabled="vm.disableTab(2)">
<tab ng-disabled="vm.disableTab(3)">
</tabset>
当用户进入页面时,无论是否禁用,第一个选项卡都会获得焦点 我希望它最初聚焦/显示第一个未禁用的标签。我将如何实现这样的目标?
编辑:plnkr:http://plnkr.co/edit/NWQDPk3DgBUpLqA0vRPw?p=preview
答案 0 :(得分:0)
需要创建将执行以下活动的自定义指令
您的 JS 指令
.directive('activeTabs', function($compile)
{
return {
link: function(scope, el, attrs) {
var tabs = el.find('li');
setTimeout(function(){
var activeTab = false;
for (var i = 0; i < tabs.length; i++)
{
if (activeTab)
break;
tab = tabs[i];
if (!angular.element(tab).hasClass("disabled"))
{
angular.element(tab).addClass('active');
tab.active = true;
activeTab = true;
var a = angular.element(tab).find('a')[0];
a.click();
break;
}
else
{
tab.active = false;
angular.element(tab).removeClass('active');
}
}
},10);
}
}
});
您的 HTML ,带有新指令
<div ng-controller="test">
<tabset active-tabs> <!--New directive is here-->
<tab heading="One" disabled="isDisabled(1)">This should not be shown</tab>
<tab heading="Two" disabled="isDisabled(2)">This should receive initial focus</tab>
<tab heading="Three" disabled="isDisabled(3)">Three</tab>
</tabset>
</div>
更新 Plunker