我是一个刚接触AngularJS的初学者,具有jQuery背景,并且仍在努力理解“Angular思维”。 我有几个类似以下的:
<button class="btn active">btn1</button>
<button class="btn">btn2</button>
...
<button class="btn">btnN</button>
使用 jQuery
来达成我的目标,即每次只有一个按钮拥有 active
类,我会这样做:
jQuery:
$(".btn").on('click', function(){
$(this).siblings().removeClass('active')
.end()
.addClass('active');
});
CSS
.active{ ... }
但是我没有找到一种在Angular中通用的方法来实现这一点。我找到了一个解决方案,可以针对3个按钮,但它变得比较粗糙,特别是如果我的应用程序有多个route
。
特别是,现在我正在使用的解决方案是:
标记
<li class="start" ng:click="selected = 1" ng-class="{active: selected == 1}">
<a href="#contenuti> </a>
</li>
<li class="start" ng:click="selected = 2" ng-class="{active: selected == 2}">
<a href="#utenti> </a>
</li>
<li class="start" ng:click="selected = 3" ng-class="{active: selected == 3}">
<a href="#messaggi> </a>
</li>
在控制器中(用于引导设置)
switch($location.path()){
case '/contenuti/plot':
$scope.selected = 1;
break;
case '/utenti':
$scope.selected = 2;
break;
case '/messaggi':
$scope.selected = 3;
break;
}
这是一种解决方案,我并不是非常喜欢,我认为这不是一个真正好的解决方案。
jQuery 解决方案 Fiddle: http://jsfiddle.net/HS4d6/