Apply Ng-class Only On The Element That Was Clicked On
I want to apply the ng-class only on the button/element that was clicked on, how would I do that? JS file: var classApp = angular.module('classApp', []); classApp.controller('cla
Solution 1:
Here comes the uses of Angular Directives. Instead of maintaining various variables, you can use a simple directive:
app.directive('clickActive', [function() {
return {
restrict: 'A',
link: function(scope, element, attr) {
element.on('click', function() {
element.toggleClass("active");
if (attr.moreClasses) {
// Optionally toggle more classes if passed
element.toggleClass(attr.moreClasses);
}
});
}
};
}]);
HTML:
<div ng-app="classApp" ng-controller="classCtrl">
<button class="button" click-active type="button">Click Meto Toggle Class</button>
<button class="button" click-active type="button">Click Meto Toggle Class</button>
</div>
Optionally, pass more classes to toggle like:
<button class="button" click-active more-classes="foo bar" type="button">Click Meto Toggle Class</button>
Solution 2:
Here is a possible solution:
The controller:
classApp.controller('classCtrl', function ($scope) {
$scope.isActive = [false, false];
$scope.activeButton = function (index) {
$scope.isActive[index] = !$scope.isActive[index];
}
});
And the html:
<div ng-app="classApp" ng-controller="classCtrl">
<button class="button" ng-class="{'active': isActive[0]}" ng-click="activeButton(0)" type="button">Click Meto Toggle Class</button>
<button class="button" ng-class="{'active': isActive[1]}" ng-click="activeButton(1)" type="button">Click Meto Toggle Class</button>
</div>
EDIT: My solution works but @Shashank Agrawal solution is better and cleaner.
Post a Comment for "Apply Ng-class Only On The Element That Was Clicked On"