bjo*_*asm 34 angularjs angularjs-ng-click
如何使用ng-click单独切换多个元素上的类?
在这个问题/sf/answers/1545047731/点击切换类是这样的:
CSS:
.red {
color: red;
}
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.toggle = false;
Run Code Online (Sandbox Code Playgroud)
HTML:
<button id="btn" ng-click="toggle = !toggle" ng-class="{'red' : toggle}">Change Class</button>
Run Code Online (Sandbox Code Playgroud)
但是如果我有几个按钮,每个按钮都应该用ng-click切换自己的类呢?
如果我以这种方式设置它:
HTML:
<button id="btn" ng-click="toggle = !toggle" ng-class="{'red' : toggle}">Change Class</button>
<button id="btn2" ng-click="toggle = !toggle" ng-class="{'red' : toggle}">Change Class</button>
Run Code Online (Sandbox Code Playgroud)
如果按一个按钮,两个按钮都会切换.
我知道一个解决方法是为每个按钮定义一个自己的ng-click事件(按钮1的f.ex toggle1,按钮2的toggle2) - 但这是最好的方法吗?
Zom*_*mbi 65
我做了一个简单的测试指令:
module.directive('toggleClass', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
element.bind('click', function() {
element.toggleClass(attrs.toggleClass);
});
}
};
});
Run Code Online (Sandbox Code Playgroud)
所以你可以制作你需要的任何元素切换类
<button id="btn" toggle-class="active">Change Class</button>
<div toggle-class="whatever"></div>
Run Code Online (Sandbox Code Playgroud)
Mat*_*Way 18
根据您的要求,您可以使用ng-repeat带有表示切换的数组.例如:
你的观点:
<div ng-repeat="toggle in toggles">
<button id="btn" ng-click="toggle.state = !toggle.state" ng-class="{'red' : toggle.state}">Change Class</button>
</div>
Run Code Online (Sandbox Code Playgroud)
在您的控制器内:
$scope.toggles = [{ state: true }, { state: false }, { state: true }];
Run Code Online (Sandbox Code Playgroud)
这样,您可以通过简单地更新数组或内部数组对象来扩展您的按钮集(如果您需要更多复杂性).
| 归档时间: |
|
| 查看次数: |
64859 次 |
| 最近记录: |