переменная приращения, когда флажок установлен - угловой

0

Я хочу, $scope.selectedRecords переменная $scope.selectedRecords увеличивалась при установке флажка. Прямо сейчас ничего не происходит, то есть {{selectedRecords}} не увеличивается. Нет никаких изменений.

контроллер:

$scope.selectedRecords = 0;

// SET-UP ROW CLICK FOR CHECKBOX
$scope.setSelected = function(record) {

  if (!record.Selected) {
    record.Selected = true;
    $scope.selectedRecords += 1
  } else {
    record.Selected = false;
    $scope.selectedRecords -= 1

  }
}

HTML:

<h4>{{selectedRecords}} users selected</h4>
<tr ng-repeat="record in records | orderBy:sortType:sortReverse | filter:searchUsers" ng-class="class" class="row-link" ng-click="setSelected(record)">
<input type="checkbox" ng-model="record.Selected" ng-click="setSelected(record)">
  • 0
    Вы пробовали использовать ng-change вместо ng-click ? Что не работает точно? Не могли бы вы предоставить CodePen, который воспроизводит ошибку? :-)
  • 0
    @LoremIpsum Я попробовал ng-change с тем же результатом. Я обновил свой OP с дополнительной информацией, и теперь я буду работать над кодовым пером.
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

Вот рабочий пример: http://codepen.io/anon/pen/pjNWVL?editors=101

Не могу понять, почему ваш образец не работает, но мой может дать вам некоторую помощь :-)

HTML:

<div ng-app="pouet" ng-controller="PouetCtrl">
  <h4>{{selectedRecords}} users selected</h4>
  <div  ng-repeat="record in records">
    <input type="checkbox" ng-model="record.selected" ng-click="setSelected(record)">
    <span class="label">{{record.label}}</span>
  </div>
</div>

JS:

var mod;

mod = angular.module('pouet', []);

mod.controller('PouetCtrl', function($scope) {
  $scope.records = [
    {
      selected: false,
      label: 'foo'
    }, {
      selected: true,
      label: 'bar'
    }, {
      selected: true,
      label: 'baz'
    }
  ];

  $scope.selectedRecords = ($scope.records.filter(function(record) {
    return record.selected;
  })).length;

  $scope.setSelected = function(record) {
    if (record.selected) {
      record.Selected = true;
      $scope.selectedRecords += 1;
    } else {
      record.selected = false;
      $scope.selectedRecords -= 1;
    }
  };
});
0

Проблема в том, что вы не определили record в области. Если вы добавите что-то вроде этого к контроллеру:

$scope.record = {};

Тогда все должно работать.

Теперь, если вы находитесь в блоке ng-repeat, все будет сложнее.

  • 0
    Я в блоке ng-repeat .. Я обновлю больше кода

Ещё вопросы

Сообщество Overcoder
Наверх
Меню