AngularJS Простой счетчик кликов не работает

Я пытаюсь создать функциональность счетчика. Я использую AngularJS с группой кнопок Bootstrap, и я не уверен, где конфликт. Ниже мой код. Может кто-нибудь помочь?

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<body>
<div ng-app="meetingDetail" ng-controller="meetingDetailCtrl">

<div class="col-md-12">

    <div class="btn-group" data-toggle="buttons">
  <label class="btn btn-success btn-sm">
    <input type="radio" name="radioSecondBy" ng-click = "yesCount = yesCount+1" id="vYes" autocomplete="off">Yes
  </label>
  <label class="btn btn-warning btn-sm">
    <input type="radio" name="radioSecondBy" ng-click = "yesCount = yesCount+1" id="vNo" autocomplete="off"> No
  </label>
  <label class="btn btn-info btn-sm">
    <input type="radio" name="radioSecondBy" ng-click = "yesCount = yesCount+1" id="vAbstain" autocomplete="off"> Abstain
  </label>
</div>

{{yesCount}}

</div>
<script>
var app = angular.module('meetingDetail', []);
app.controller('meetingDetailCtrl', function($scope) {
    $scope.yesCount= 0;
});
</script>

</body>
</html>

person Kiran Kolli    schedule 31.08.2016    source источник
comment
вы получаете какую-либо ошибку в консоли?   -  person Jahongir Rahmonov    schedule 31.08.2016
comment
Вы не можете использовать ng-click в теге ‹input /›   -  person ojus kulkarni    schedule 31.08.2016
comment
Я получаю undefined для переменной   -  person Kiran Kolli    schedule 31.08.2016


Ответы (2)


Радиокнопки не имеют события клика.

Поместите событие клика на ярлык вместо переключателя

Нравится

  <label ng-click = "yesCount = yesCount+1" class="btn btn-info btn-sm">
    <input type="radio" name="radioSecondBy"  id="vAbstain" autocomplete="off"> Abstain
  </label>

<!DOCTYPE html>
<html>
  <head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    </head>
<body>
<div ng-app="meetingDetail" ng-controller="meetingDetailCtrl">

<div class="col-md-12">

    <div class="btn-group" data-toggle="buttons">
  <label class="btn btn-success btn-sm" ng-click = "yesCount = yesCount+1">
    <input type="radio" name="radioSecondBy"  id="vYes" autocomplete="off">Yes
  </label>
  <label class="btn btn-warning btn-sm" ng-click = "yesCount = yesCount+1" >
    <input type="radio" name="radioSecondBy" id="vNo" autocomplete="off"> No
  </label>
  <label ng-click = "yesCount = yesCount+1" class="btn btn-info btn-sm">
    <input type="radio" name="radioSecondBy"  id="vAbstain" autocomplete="off"> Abstain
  </label>
</div>
{{yesCount}}


</div>
</div>
  <script>
var app = angular.module('meetingDetail', []);
app.controller('meetingDetailCtrl', function($scope) {
    $scope.yesCount= 0;

});
</script>

</body>
</html>

person Anik Islam Abhi    schedule 31.08.2016

ng-click не работает с переключателями. Вы можете использовать либо ng-change, либо посмотреть переменную

1) нг-изменить

<input type="radio" name="radioSecondBy" ng-change= "yesCount = yesCount+1" id="vYes" autocomplete="off">Yes

2) $ смотреть

$scope.$watch('yesCount', function(value) {
       $scope.yesCount = $scope.yesCount + 1;
 });

здесь аналогичный вопрос

person Sunil Garg    schedule 31.08.2016
comment
изменить ng-chaneg на ng-change - person Anik Islam Abhi; 31.08.2016