如何在angular.js中对单击的li(选项卡)设置焦点/活动
How to set focus/active on the clicked li(tab) in angular.js
我有一个选项卡列表,我试图在其中为单击的列表项设置类(但类应该只为单击的项设置),我的html看起来像这样:
<div class="details-table">
<ul class="table-toggle">
<li class="active"><a href="" class="">Personal</a></li>
<li><a href="" class="" >Professional</a></li>
</ul>
<div class="scrollable-table-box">
<table>
...
</table>
</div>
</div>
我的css看起来是这样的:
.details-table {
display: block;
float: left;
width: 100%;
}
.table-toggle {
display: block;
float: left;
width: 100%;
border-bottom: solid 5px #d9d9d9;
}
.table-toggle li {
display: block;
float: left;
width: 220px;
margin-right: 5px;
}
.table-toggle li a {
color: #868686;
display: block;
font-size: 14px;
padding: 15px 30px;
text-align: center;
text-decoration: none;
text-transform: uppercase;
}
.table-toggle li:hover a,
.table-toggle li.active a {
background-color: #d9d9d9;
color: #333;
font-weight: 600;
}
我想将焦点设置为单击的li项目,但我无法确定如何做到这一点?我试着使用ng-click(),但我不知道如何将焦点设置为里面的选定项目。
您可以应用ng类来确定活动项,如下所示。单击时设置activetab。
<li ng-class="{active: activeTab == 'personal'}"><a href="#" ng-click="setActiveTab('personal')" class="">Personal</a></li>
<li ng-class="{active: activeTab == 'professional'}"><a href="#" ng-click="setActiveTab('professional')" class="" >Professional</a></li>
//JS-
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.activeTab = 'personal';
$scope.setActiveTab = function(value) {
$scope.activeTab = value;
};
});
Plunker示例:http://plnkr.co/edit/Ze7ps9XcNpLPHIs4I6Mi?p=preview
为了实现这一点,您需要使用角度指令ng-click和ng-class
-
在您的表切换中,您稍微更改了li的元素(添加了ng类以检查活动的li):
<ul class="table-toggle"> <li ng-class="{'active':selected == 'tab1'}" ng-click="select('tab1')"><a href="" class="">Personal</a></li> <li ng-class="{'active':selected == 'tab2'}" ng-click="select('tab2')"><a href="" class="" >Professional</a></li> </ul>
-
您只需在控制器中添加一个函数,该函数每次都会获得一个选项卡参数和一个选定的变量,该变量保存活动li。默认活动li是tab1(个人)
$scope.selected = 'tab1'; $scope.select = function(item){ $scope.selected = item; }
现场灌篮:http://plnkr.co/edit/TlKZNcDKMcOYDrGNcAch?p=preview
希望有帮助,祝你好运。
你可以试试这个:
var m = [{
isSelected: true,
country: "India",
index: "2"
}, {
isSelected: false,
country: "England",
index: "2"
}, {
isSelected: false,
country: "Brazil",
index: "3"
}, {
isSelected: false,
country: "UK",
index: "1"
}, {
isSelected: false,
country: "USA",
index: "3"
}, {
isSelected: false,
country: "Syria",
index: "2"
}]
function MyCtrl($scope) {
$scope.items = m;
$scope.updateSelectedItem = function(item) {
m.forEach(function(row) {
row.isSelected = false;
});
item.isSelected = true;
}
}
.selected {
background: orange
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<h3>FIFA Mactch Summary:</h3>
<div ng-app ng-controller="MyCtrl">
<ul>
<li ng-repeat="i in items" ng-class="{selected:i.isSelected == true}" ng-click="updateSelectedItem(i)">{{i.country}}: {{i.index}}</li>
</ul>
</div>
相关文章:
- 选项设置文本值重复..有没有我可以检查的财产以避免重复
- 在HTML5、CSS、JavaScript中添加选项选择器,类似于移动应用程序中的选项设置
- 如果选定,如何将所选选项设置为 true
- 为什么从指令中更改外部作用域需要 scope.$apply(),即使我将范围选项设置为 false
- 使用 Javascript 函数根据所选选项设置 HTML 文本框值.但它似乎不起作用
- 拒绝在帧中显示,因为它将“X帧选项”设置为“SAMEORIGIN”
- 如何将第一个选择选项设置为始终为空
- 使用原版 JS 在下拉列表中将所选选项设置为大写
- Javascript OOP, getters, setters, run - D3.js - 通过选项设置使图形可重用
- 高图表 + 从 jquery 中的选项设置事件点击
- 具有查询 UI 折叠项的自定义绑定的选项设置
- 根据语言首选项设置提供语言文件
- 如何使用javascript和css为select中的选项设置不透明度
- 可以't将选择选项设置为默认选项
- Phonegap Corodva应用iOS的自定义启动页面选项(设置self.viewController.startP
- Chrome时区选项设置为Date.toLocaleString()
- 将第一个可见选项设置为默认值
- 如何对不同的选择选项设置不同的操作?
- 如何将下拉列表中的最后一个选项设置为使用D3.js选择
- 为在角度下拉列表中创建的默认空白选项设置占位符文本