Angular Получить выбранные флажки

У меня есть список динамически заполненных флажков с помощью angular.

 <div ng-repeat="X in XList">
     <label>{{X.Header}}</label>
     <input type="checkbox" name="X" value="{{X.Item.Id}}" />
     <p>{{X.Header}}</p>
 </div>

Я хочу, чтобы метод извлекал список всех выбранных флажков. Обычно я использую

 $('input[name=checkboxlist]:checked').each(function()
{
}

Но это неприемлемо с angular.... Так есть ли подходящий метод для этого?

Ответ 1

здесь реализован plunker

 <input type="checkbox" ng-model="selected[record.Id]"> {{record.Id}}

 $scope.ShowSelected = function() {
  console.log($scope.selected);
  alert(JSON.stringify($scope.selected));
};

Ответ 2

Вы можете использовать директиву ng-model для прямого привязки свойства к элементу.

например.

<input type="checkbox" ng-model="X.Item.Id" />

Это обновит вашу модель.

Из этого вы сможете просто проверить значения в своей модели и посмотреть, какие из них отмечены.

например.

angular.forEach($scope.yourModelItems, function(item){
    // item.value ? 0 : 1;
});

Ознакомьтесь с документацией для ngModel. Также демонстрируется пример списка ToDo на странице angularjs.org.

p.s. На стороне примечания вы также можете сделать ваши angular директивы html5 дружественными, добавив data- раньше. например data-ng-model="X.Item.Id"

Ответ 3

<tr ng-repeat="x in numbers" >
<td><input type="checkbox"  ng-model="selected[x.id]"></td>`<tr ng-repeat="x in numbers" >

затем кнопку для действия

 <button ng-click="get_all_cheked()">Get checked</button>    

а затем в контроллере

 $scope.selected = {};
 $scope.get_all_cheked=function () {
 console.log("click");
 console.log($scope.selected);
 }