ng-class 用于突出显示基于 ng 重复的活动菜单项.AngularJS.
ng-class to highlight active menu item based on ng-repeat. AngularJS
我有一个基于以下示例的菜单:
<nav data-ng-controller="menuContrl" class="menuItem">
<a data-ng-class='{active:isActive("/{{item.path}}")}' data-ng-repeat="item in menu" href="#/{{item.path}}">
<span>{{item.title}}</span>
</a>
</nav>
项是一个对象,包含菜单项信息。以下是指令和控制器的 JavaScript 代码:
var app = angular.module("coolApp",[]);
function menuContrl($scope,$location){
$scope.menu=menu;
$scope.isActive = function(path){
return ($location.path()==path)
}
}
问题是ng-class
class
设置为在页面呈现期间仅active
一次,但是当您单击菜单项时,没有任何反应。我想这是因为菜单本身没有重新加载,我只是在<div>
内更改数据。那么如何在不重新加载整个页面的情况下使其工作呢?
试试这个:- http://jsfiddle.net/uDPHL/146/
此问题存在于旧版本的angular js
参考中,将其升级到angular js 1.2.0
版本后问题已解决。
.JS:-
var navList = angular.module('navList', []);
navList.controller('navCtrl', ['$scope', '$location', function ($scope, $location) {
$scope.navLinks = [{
Title: 'home',
LinkText: 'Home',
}, {
Title: 'about',
LinkText: 'About Us'
}, {
Title: 'contact',
LinkText: 'Contact Us'
}];
$scope.navClass = function (page) {
var currentRoute = $location.path().substring(1) || 'home';
return page === currentRoute ? 'active' : '';
};
}]);
.HTML:-
<div class="well sidebar-nav" ng-app="navList">
<ul class="nav nav-list" ng-controller="navCtrl">
<li ng-repeat="navLink in navLinks" ng-class="navClass('{{navLink.Title}}')"> <a href='#/{{navLink.Title}}'>{{navLink.LinkText}}</a>
</li>
</ul>
</div>
我发现如果你去的话会更容易一些:
<li ng-repeat="i in mainMenu" ng-class="{'active':i.path == path}">
然后,您只需更改控制器中的 $scope.path 即可。
//app.run
App.run(["$rootScope", "$state", "$stateParams",function ($rootScope, $state, $stateParams) {
// Set reference to access them from any scope
$rootScope.$route = $state;
}]);
// app.config
$stateProvider
.state('admin', {
url: '/admin/',
templateUrl: 'app/admin/admin.html',
controller: 'AdminController',
})
.state('admin.dashboard', {
url: 'dashboard',
title: 'Dashboard',
activetab: 'dashboard',
controller: 'DashboardController',
templateUrl: 'app/admin/dashboard.html',
})
.state('admin.view1', {
url: 'view1',
title: 'view1',
activetab: 'view1',
controller: 'view1Controller',
templateUrl: 'app/admin/view1.html',
})
.state('admin.view2', {
url: 'view2',
title: 'view2',
activetab: 'view2',
controller: 'View2Controller',
templateUrl: 'app/admin/view2.html',
});
<li class="h4" ng-class="{'active': $route.current.activetab == 'dashboard'}">
<a>Dashboard</a>
</li>
<li class="h4" ng-class="{'active': $route.current.activetab == 'view1'}">
<a>view1</a>
</li>
<li class="h4" ng-class="{'active': $route.current.activetab == 'view2'}">
<a active-link="active">view2</a>
</li>
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS:我可以跳过函数参数回调吗
- 使用 AngularJS 设置活动选项卡样式
- 赢得的活动't Codecademy's日历AngularJS作业
- Bootstrap/AngularJs:如何为导航类的活动选择设置粗体属性
- Angularjs :动态创建的选项卡不会处于活动状态/选中状态
- ng-class 用于突出显示基于 ng 重复的活动菜单项.AngularJS.
- AngularJS,两级菜单根据 url 将“活动”类添加到活动子项及其父项
- 如何使用 AngularJS 和 AngularFire 存储对“活动元素”的引用
- angularjs-ui路由器当前处于活动状态
- 如何关闭AngularJS中的活动选项卡
- AngularJS-'这'在私人活动中
- 如何更改angularjs中单击按钮的活动选项卡
- 突出显示控制器AngularJS中的活动页面
- 如何在Angularjs中默认只启用活动选项卡而禁用所有其他选项卡
- AngularJS - ngRepeat显示选中的行为活动状态
- AngularJS:为li添加活动效果和悬停效果
- 在AngularJS中高亮当前活动菜单的正确方法是什么?
- AngularJS / ui-bootstrap accordion -点击时滚动到活动(打开)手风琴的顶部
- 多项目casrousel代表类=“;项目活动”;不工作-AngularJS