【发布时间】:2016-03-30 01:07:37
【问题描述】:
我有一个包含多个图标的菜单,当我单击其中一个图标时,会更改图标,当我再次单击同一个图标时,会返回其原始状态,但如果我单击一个然后单击另外,第一个图标应该恢复到原来的状态,但它没有,我不确定为什么它没有被修改。
HTML 是这样的:
<div id="navbar" class="navbar-collapse collapse" ng-controller="customerInformationController">
<ul class="nav navbar-nav navbar-left">
<li>
<menuico linkTo="main" imageDefault="ico_menu_off.png" />
</li>
<li>
<menuico linkTo="customerSearch" imageDefault="ico_search_off.png" />
</li>
<li>
<menuico linkTo="#" imageDefault="ico_user_off.png" />
</li>
</ul>
<img src="img/logo_santander.png" class="logo" />
<ul class="nav navbar-nav navbar-right">
<li class="navbar-manager">{{nombreGestor}}</li>
<li><a ng-click="closeTabs();" class="close-session"><img src="img/ico_closesession.png" /></a></li>
</ul>
</div>
我正在使用 AngularJS 指令来进行此类更改图标。 Angular 代码是:
app.directive('menuico', function() {
return {
restrict: 'E',
replace:true,
scope: {},
template: '<a href="#{{route}}"><img src="img/{{image}}" /></a>',
link: function(scope, elem, attrs) {
var active = false;
var defaultRoute = "";
var activeIcon = "ico_close.png";
scope.image = attrs.imagedefault;
scope.route = attrs.linkto;
elem.bind("click", function() {
active = !active;
if(active) {
scope.route = defaultRoute;
scope.image = activeIcon;
} else {
scope.route = attrs.linkto;
scope.image = attrs.imagedefault;
}
});
}
};
});
例如,我需要的是,如果我单击“ico_search_off.png”,则此更改为“ico_close.png”,如果我现在单击“ico_user_off.png”,则此更改为“ico_close .png”和第一个要变回原来的状态,也就是“ico_search_off.png”,但是第一个不变,保持在当前状态
【问题讨论】:
标签: angularjs html twitter-bootstrap-3 angularjs-directive