Мне нужно сделать кнопку переключения... когда вы нажмете один раз, она добавит деньги к общей цене, если вы снова нажмете кнопку и "отмените выбор", она вычтет эту сумму из общей суммы.
У меня есть этот HTML-код, который добавляет и удаляет класс для изменения цвета фона выбранной кнопки -
<div class="col-md-4" ng-repeat="service in services_data track by $index">
<div ng-class="showDetails[$index] ? 'panel-warning': 'panel-default'" class="panel">
<button ng-click="$parent.showDetails[$index] = !$parent.showDetails[$index]; price(service.price, service.est_time_mins)" class="panel-heading btn"><span class="pull-left badge">$ {{service.price}}</span>{{service.name}}</button>
<div class="panel-body">
{{service.est_time_mins}} mins. {{service.style}}
</div>
</div>
</div>
и этот контроллер -
app.controller('AppointmentController', ['$scope','services', function($scope, services) {
var data = {};
data.fn = 'services';
services.getData(data).success(function(return_data){
console.log(return_data);
$scope.services_data = return_data;
});
var data = {};
data.fn = 'get_barbers';
services.getData(data).success(function(rd){
$scope.barbers = rd;
console.log(rd);
});
$scope.total_price = 0;
$scope.time = 0;
$scope.price = function(price, time){
$scope.total_price = parseInt(price) + parseInt($scope.total_price);
$scope.time = parseInt(time) + parseInt($scope.time);
}
}]);
Наверное, довольно легко, но я не могу обвести вокруг себя голову. Благодарю.
Используйте логический флаг:
$scope.selected = false;
$scope.add = function(price) {
//If item is currently selected, subtract price
if ($scope.selected) $scope.total_price -= price;
//If item is currently NOT selected, add price
else $scope.total_price += price;
$scope.selected = !$scope.selected;
};