可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
How can I toggle classes on several elements individually with ng-click?
In this question https://stackoverflow.com/a/22072110/2169327 toggling classes with a click was done like this:
CSS:
.red { color: red; }
JS:
$scope.toggle = false;
HTML:
But what if I have several buttons that each should toggle its own class with ng-click?
If I set it up in this way:
HTML:
Both buttons get toggled if I press one.
I know a workaround is to define an own ng-click event for each button (f.ex toggle1 for button1, toggle2 for button2) - but is this the best way?
回答1:
I made simple directive for testing:
module.directive('toggleClass', function() { return { restrict: 'A', link: function(scope, element, attrs) { element.bind('click', function() { element.toggleClass(attrs.toggleClass); }); } }; });
so you can make any element toggle class you need
回答2:
Depending on your requirements, you may be able to use an ng-repeat
with an array representing the toggles. For example:
Your view:
Inside your controller:
$scope.toggles = [{ state: true }, { state: false }, { state: true }];
This way you can expand on your button set by simply updating the array, or the internal array objects (should you need more complexity).