使用ng-click添加和删除angularJs中的类
我正在尝试如何使用ngClick添加一个类。 我已经把我的代码上传到plunker 点击这里 。 看着angular度的文件,我无法弄清楚它应该完成的确切的方式。 下面是我的代码片段。 有人能指引我正确的方向吗?
<div ng-show="isVisible" ng-class="{'selected': $index==selectedIndex}" class="block"></div>
调节器
var app = angular.module("MyApp", []); app.controller("subNavController", function ($scope){ $scope.toggle = function (){ $scope.isVisible = ! $scope.isVisible; }; $scope.isVisible = false; });
您只需要将一个variables绑定到指令“ng-class”并从控制器中进行更改即可。 这里是一个如何做到这一点的例子:
var app = angular.module("ap",[]); app.controller("con",function($scope){ $scope.class = "red"; $scope.changeClass = function(){ if ($scope.class === "red") $scope.class = "blue"; else $scope.class = "red"; }; });
.red{ color:red; } .blue{ color:blue; }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <body ng-app="ap" ng-controller="con"> <div ng-class="class">{{class}}</div> <button ng-click="changeClass()">Change Class</button> </body>
我想在我的代码中dynamic添加或删除 “ active
”类,在这里我做了什么。
<ul ng-init="selectedTab = 'users'"> <li ng-class="{'active':selectedTab === 'users'}" ng-click="selectedTab = 'users'"><a href="#users" >Users</a></li> <li ng-class="{'active':selectedTab === 'items'}" ng-click="selectedTab = 'items'"><a href="#items" >Items</a></li> </ul>
你有完全正确的,你所要做的就是在ng-click中设置selectedIndex。
ng-click="selectedIndex = 1"
下面是我如何实现一组改变ng-view的button,并突出显示当前选定视图的button。
<div id="sidebar" ng-init="partial = 'main'"> <div class="routeBtn" ng-class="{selected:partial=='main'}" ng-click="router('main')"><span>Main</span></div> <div class="routeBtn" ng-class="{selected:partial=='view1'}" ng-click="router('view1')"><span>Resume</span></div> <div class="routeBtn" ng-class="{selected:partial=='view2'}" ng-click="router('view2')"><span>Code</span></div> <div class="routeBtn" ng-class="{selected:partial=='view3'}" ng-click="router('view3')"><span>Game</span></div> </div>
这在我的控制器。
$scope.router = function(endpoint) { $location.path("/" + ($scope.partial = endpoint)); };
你也可以在指令中做到这一点,如果你想删除以前的类,并添加一个新的类
.directive('toggleClass', function() { return { restrict: 'A', link: function(scope, element, attrs) { element.bind('click', function() { if(element.attr("class") == "glyphicon glyphicon-pencil") { element.removeClass("glyphicon glyphicon-pencil"); element.addClass(attrs.toggleClass); } else { element.removeClass("glyphicon glyphicon-ok"); element.addClass("glyphicon glyphicon-pencil"); } }); } }; });
并在您的模板中:
<i class="glyphicon glyphicon-pencil" toggle-class="glyphicon glyphicon-ok"></i>
var app = angular.module("MyApp", []); app.controller("subNavController", function ($scope){ $scope.toggle = function (){ $scope.isVisible = ! $scope.isVisible; }; $scope.isVisible = false; });
<div ng-show="isVisible" ng-class="{'active':isVisible}" class="block"></div>
有一个简单而干净的方法,只用指令来做到这一点。
<div ng-class="{'class-name': clicked}" ng-click="clicked = !clicked"></div>
我用上面的Zack Argyle的build议来得到这个,我觉得很优雅:
CSS:
.active { background-position: 0 -46px !important; }
HTML:
<button ng-click="satisfaction = 'VeryHappy'" ng-class="{active:satisfaction == 'VeryHappy'}"> <img src="images/VeryHappy.png" style="height:24px;" /> </button> <button ng-click="satisfaction = 'Happy'" ng-class="{active:satisfaction == 'Happy'}"> <img src="images/Happy.png" style="height:24px;" /> </button> <button ng-click="satisfaction = 'Indifferent'" ng-class="{active:satisfaction == 'Indifferent'}"> <img src="images/Indifferent.png" style="height:24px;" /> </button> <button ng-click="satisfaction = 'Unhappy'" ng-class="{active:satisfaction == 'Unhappy'}"> <img src="images/Unhappy.png" style="height:24px;" /> </button> <button ng-click="satisfaction = 'VeryUnhappy'" ng-class="{active:satisfaction == 'VeryUnhappy'}"> <img src="images/VeryUnhappy.png" style="height:24px;" /> </button>
如果您喜欢分离关注点,以便在控制器上添加和删除类的逻辑,则可以执行此操作
调节器
(function() { angular.module('MyApp', []).controller('MyController', MyController); function MyController() { var vm = this; vm.tab = 0; vm.setTab = function(val) { vm.tab = val; }; vm.toggleClass = function(val) { return val === vm.tab; }; } })();
HTML
<div ng-app="MyApp"> <ul class="" ng-controller="MyController as myCtrl"> <li ng-click="myCtrl.setTab(0)" ng-class="{'highlighted':myCtrl.toggleClass(0)}">One</li> <li ng-click="myCtrl.setTab(1)" ng-class="{'highlighted':myCtrl.toggleClass(1)}">Two</li> <li ng-click="myCtrl.setTab(2)" ng-class="{'highlighted':myCtrl.toggleClass(2)}">Three</li> <li ng-click="myCtrl.setTab(3)" ng-class="{'highlighted':myCtrl.toggleClass(3)}">Four</li> </ul>
CSS
.highlighted { background-color: green; color: white; }
我无法相信每个人都有多复杂。 这其实很简单。 只需粘贴到您的HTML(没有指令./控制器更改所需 – “bg-info”是一个引导类):
<div class="form-group col-md-12"> <div ng-class="{'bg-info': (!transport_type)}" ng-click="transport_type=false">CARS</div> <div ng-class="{'bg-info': transport_type=='TRAINS'}" ng-click="transport_type='TRAINS'">TRAINS</div> <div ng-class="{'bg-info': transport_type=='PLANES'}" ng-click="transport_type='PLANES'">PLANES</div> </div>
- 随着ng-bind-html-unsafe被删除,我如何注入HTML?
- 找不到模块'../build/Release/bson'] code:'MODULE_NOT_FOUND'} js-bson:无法加载c ++ bson扩展,使用纯JS版本
- Django的csrf标记+ Angularjs
- AngularJS和contentEditable两种方式绑定不能按预期工作
- angular.isdefined有什么好处?
- 要求和ng要求有什么区别?
- 从AngularJS指令访问属性
- 未知的提供者:$ modalProvider < – $ AngularJS的模态错误
- 使用angular / bootstrap的<select>占位符不起作用