#angularjs #angularjs-scope
#angularjs #angularjs-область видимости
Вопрос:
Я полагаю, то, что я ищу, больше похоже на переключатель. в принципе, у меня есть это:
<i class="checkbox pull-left" ng-click="changePrice()"></i>
У меня есть переменная в моем контроллере, вот так:
$scope.basePrice = 10;
Что я хочу сделать, это установить флажок, переключить переменную на другой номер. Что я могу сделать. Моя проблема заключается в том, когда я снимаю флажок, и переменная не переключается обратно. Я пробовал оператор if / else if, ng-change, ng-click, я думал, что переключатель может сработать, но на данный момент я невежествен. Любая помощь была бы признательна.
запрошенный пример контроллера:
app.controller('examplectrl', '[$scope', function($scope){
$scope.basePrice = 10;
$scope.changePrice = function(){
if($('#changePrice.checked')){
console.log("checked");
}else{
console.log("not checked.")
}
};
}]);
Комментарии:
1. Можете ли вы показать нам свой код контроллера?
2. я посмотрю, что я могу сделать
Ответ №1:
Я добавил вторую переменную, которая сохраняет значение переключения как boolean
Цена обновлена до 25, но вы можете добавить туда свой собственный код
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.basePrice = 10;
$scope.priceToggle = false;
$scope.changePrice = function() {
$scope.priceToggle ? $scope.basePrice = 10: $scope.basePrice = 25;
$scope.priceToggle = !$scope.priceToggle;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myApp" ng-controller="myCtrl">
<button class="checkbox pull-left" ng-click="changePrice()">Change price</button>
<p ng-bind="basePrice"></p>
</body>
Ответ №2:
Вы можете сделать это без использования функции контроллера:
angular.module('app', []);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app">
<i ng-init="basePrice = 10" class="checkbox pull-left" ng-click="basePrice = basePrice == 10 ? 25 : 10">PRICE</i>
{{basePrice}}
</body>