javascript - 在一组按钮中激活单个按钮
问题描述
我正在研究一个显示许多按钮的指令。我想只在活动按钮上调用 onclick 方法,而不是在非活动按钮上调用。
<div class="container">
<button type="button" class="btn" ng-class="{'active': isActive}" ng-click="activeButton()">All</button>
<button type="button" class="btn" ng-class="{'active': isActive}">Small<span class="price"> $241+</span></button>
<button type="button" class="btn" ng-class="{'active': isActive}" click="activeButton()">Medium<span class="price"> $241+</span></button>
<button type="button" class="btn" ng-class="{'active': isActive}" click="activeButton()">Large<span class="price"> $241+</span></button>
<button type="button" class="btn" ng-class="{'active': isActive}" click="activeButton()">SUV<span class="price"> $241+</span></button>
<button type="button" class="btn" ng-class="{'active': isActive}" click="activeButton()">VAN<span class="price"> $241+</span></button>
<button type="button" class="btn" ng-class="{'active': isActive}" click="activeButton()">More</button>
</div>
app.controller('appCtrl', function ($scope) {
$scope.isActive = false;
$scope.activeButton = function() {
$scope.isActive = !$scope.isActive;
}
});
我怎样才能做到这一点?
解决方案
假设你有这个 html:
<div class="container">
<button ng-repeat="item in buttons" type="button" class="btn" ng-class="item.isActive"
ng-click="activeButton(item)">{{item.name}}<span class="price"> {{item.price}}</span></button>
</div>
然后你可以在你的控制器中有这个:
$scope.buttons = [{
name: "All",
price: "",
isActive: "inactive"
}, {
name: "Small",
price: "$230+",
isActive: "inactive"
}, {
name: "Medium",
price: "$235+",
isActive: "inactive"
}, {
name: "Large",
price: "$237+",
isActive: "inactive"
}, {
name: "SUV",
price: "$240+",
isActive: "inactive"
}, {
name: "VAN",
price: "$241+",
isActive: "inactive"
}, {
name: "More",
price: "",
isActive: "inactive"
}];
$scope.activeButton = function(item) {
angular.forEach($scope.buttons, function(button, index) {
if (item.name == button.name) {
button.isActive = "active";
} else {
button.isActive = "inactive";
}
});
}
在你的CSS中,它会像:
.active {
background-color: yellow;
}
.inactive {
background-color: white;
}
检查这个 plunkr。
推荐阅读
- c++ - OpenCV Tracker 属性访问在 ARM 上使用 SEGFAULT 失败,但在 X86_64 中有效
- python - Pyomo 中的所有不同约束
- java - Intellij IDEA 无法构建简单的类
- android - 使用新数据调用 invalidate() 后 MPAndroid 图表消失
- java - Java 调试器未针对行断点暂停/停止
- xamarin.forms - 动态绑定单选按钮 xamarin 和单击事件
- mvvm - 绑定Textbox详情时如何避免属性过多
- sql - 如何插入到 2 个表中?
- linux - mod_jk 无法连接 Apache 和 tomcat
- javascript - 更新对象的 useState 数组中的对象值