Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   ng-checked срабатывает один раз (https://javascript.ru/forum/angular/71712-ng-checked-srabatyvaet-odin-raz.html)

One_Two 07.12.2017 12:20

ng-checked срабатывает один раз
 
Всем привет!

Делаю простой пример с радио-кнопками и отправляю их значение в массив.
Подскажите пожалуйста, почему ng-checked у радио-кнопки срабатывает 1 раз? После того как отправляю значение, ng-ckecked по дефолту не ставится.

<!DOCTYPE html>
<html ng-app="myApp">

  <head>
    <title>Modal</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
    <script>
      angular.module('myApp', []);
      angular.module('myApp').controller('myCtrl', function($scope) {
        $scope.arrs = [];
        $scope.add = function(){
          $scope.arrs.push({radio:$scope.radioVal});
          $scope.radioVal = '';
        };
        console.log($scope.arrs);
      });
    </script>
  </head>

  <body ng-controller="myCtrl">
    <div>
      <button ng-click="showBlock = ! showBlock">Кнопка</button>
    </div>
    <div ng-show="showBlock">
      <input type="radio" ng-model="radioVal" value="def" ng-checked="true"><span>Дефолт</span><br>
      <input type="radio" ng-model="radioVal" value="1"><span>1</span><br>
      <input type="radio" ng-model="radioVal" value="2"><span>2</span><br>
      <button ng-click="add()">Отправить</button>
    </div>
  </body>

</html>

One_Two 07.12.2017 12:39

И ещё заметил, что вроде как радио-кнопка выбрана по дефолту, значение передается "undefined", если сразу нажать "отправить"..

рони 07.12.2017 13:20

Цитата:

Сообщение от One_Two
ng-ckecked по дефолту не ставится.

Цитата:

Сообщение от One_Two
$scope.radioVal = '';

<!DOCTYPE html>
<html ng-app="myApp">

  <head>
    <title>Modal</title>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
    <script>
      angular.module('myApp', []);
      angular.module('myApp').controller('myCtrl', function($scope) {
        $scope.arrs = []; $scope.radioVal = 'def';
        $scope.add = function(){
          $scope.arrs.push({radio:$scope.radioVal});
          $scope.radioVal = 'def';
          console.log($scope.arrs);
        };
        console.log($scope.arrs);
      });
    </script>
  </head>

  <body ng-controller="myCtrl">
    <div>
      <button ng-click="showBlock = ! showBlock">Кнопка</button>
    </div>
    <div ng-show="showBlock">
      <input type="radio" ng-model="radioVal" value="def" ><span>Дефолт</span><br>
      <input type="radio" ng-model="radioVal" value="1"><span>1</span><br>
      <input type="radio" ng-model="radioVal" value="2"><span>2</span><br>
      <button ng-click="add()">Отправить</button>
    </div>
  </body>

</html>

One_Two 07.12.2017 13:26

Спасибо!!!


Часовой пояс GMT +3, время: 14:11.