如何在Angularjs中默认只启用活动选项卡而禁用所有其他选项卡
How to enable only active tab and disable all other tabs by default in Angularjs?
我有四个标签:"Tab1, Tab2, Tab3, Tab4"。
默认情况下,所有选项卡都应该被禁用,激活选项卡应该被启用。
如果我点击活动选项卡中的提交按钮,那么我应该通过启用下一个选项卡并将其设置为活动并禁用前一个选项卡来自动导航到下一个选项卡。
<li class="myli" ng-repeat="tab in tabs track by $index" ng-class="{active:isSelected($index)}"><a href ng-click="displaySelectedtab(tab, $index)">{{tab}}</a></li>
<div class="panel-body newPanelBody" ng-if="displaytab1 && !displaytab2 && !displaytab3 && !displaytab4">
<form name="actForm" role="form" data-ng-init="resp()" ng-submit="save()" novalidate>
<h4>Tab1</h4>
<br>
<button class="btn save sbmt" type="submit" id="submit">SAVE & CONTINUE</button>
</form>
</div>
<div class="panel-body newPanelBody" ng-if="displaytab2 && !displaytab1 && !displaytab3 && !displaytab4">
<form name="actForm" role="form" data-ng-init="resp()" ng-submit="save()" novalidate>
<h4>Tab2</h4>
<br>
<button class="btn save sbmt" type="submit" id="submit">SAVE & CONTINUE</button>
</form>
</div>
<div class="panel-body newPanelBody" ng-if="displaytab3 && !displaytab1 && !displaytab2 && !displaytab4">
<form name="actForm" role="form" data-ng-init="resp()" ng-submit="save()" novalidate>
<h4>Tab3</h4>
<br>
<button class="btn save sbmt" type="submit" id="submit">SAVE & CONTINUE</button>
</form>
</div>
<div class="panel-body newPanelBody" ng-if="displaytab4 && !displaytab1 && !displaytab2 && !displaytab3">
<form name="actForm" role="form" data-ng-init="resp()" ng-submit="save()" novalidate>
<h4>Tab4</h4>
<br>
<button class="btn save sbmt" type="submit" id="submit">SAVE & CONTINUE</button>
</form>
</div>
首先,您使用。panel-body和。btn让我假设您使用了bootstrap,所以请查看这里:https://angular-ui.github.io/bootstrap/在那个页面上有一个tab组件,用于angular和bootstrap。
其次,使用整数来控制当前选择的选项卡,而不是使用布尔值来控制应该显示哪个选项卡,要容易得多。这也将允许您使用可变数量的选项卡。
<li class="myli" ng-repeat="tab in tabs track by $index" ng-class="{active: selectedIndex == $index}"><a href ng-click="displaySelectedtab(tab, $index)">{{tab}}</a></li>
<div class="panel-body newPanelBody" ng-repeat="tab in tabs track by $index" ng-if="selectedIndex == $index">
<h4>Tab {{$index + 1}}</h4>
<!-- If you need different content for each tab you can include an angular template as well -->
<ng-include src="'path/to/template.tpl.html'"></ng-include>
</div>
这需要你考虑一下如何存储你的标签内容。最简单的方法可能是使用模板。在这种情况下,您可以设计一种策略,使制表符数组包含既包含制表符标题又包含内容模板url的对象,如下所示:
$scope.tabs = [
{
"title": "Tab 1",
"templateUrl": "path/to/template.tpl.html"
}
];
你的ng-include看起来像这样:
<ng-include src="tab.templateUrl"></ng-include>
使表单的提交动作转到另一个选项卡,然后就变成了改变$作用域的简单问题。
将ng-if="displaytab1 && !displaytab2 && !displaytab3 && !displaytab4"
改为ng-if="$index==selected"
在您的按钮提交功能中添加索引,如ng-submit="save($index)"
In controller method:
`$scope.selected=1; $scope.save= function(index){selected=index+1;}`
相关文章:
- 使用jQuery选项卡来显示或隐藏其他内容
- 无法在其他调用上设置jQuery对话框选项
- 选择框已禁用或由其他选择框的某个选项启用
- 如何使用CSS设置所选选项的样式,而不设置所有其他选项的样式
- 编写脚本以关闭其他选项卡或浏览器
- 从下拉列表中选择其他选项时激活文本框
- DateRangePicker 不适用于“今天”,但可以使用其他选项
- 如何使用其他下拉列表中未选择的选项填充下拉列表
- 我创建了一个下拉列表,以及如何显示所选项目的其他列数据
- 如何使用“引导”来选择引导选项卡;下一个“;按钮我遵循了其他答案,但没有奏效
- Meteor AutoForm:如何基于其他控件更新选择选项
- 根据选择选项启用/禁用其他输入
- 如果选择框已在其他框中选中,则从该框中删除选项
- 使用AngularJS中的ngOptions隐藏其他列表中的选定选项
- 下拉菜单的第一个选项不是一个选项;强制使用其他选项
- 删除在单击其他选项卡时生成的url查询元素的一部分
- 在这种javascript情况下,除了eval之外的任何其他选项
- 在其他选项卡中打开链接
- 使用页面上其他位置的链接激活选项卡
- 在更改或其他选项上