Если я правильно понимаю вашу проблему, вы сталкиваетесь с дублирующими записями в вашем enquiryArr
.Вы сталкиваетесь с этим, потому что вы пытаетесь вручную отслеживать массив странным образом.Несмотря на то, что существуют способы исправить способ хранения, еще проще определить, что проверено, а что нет.
Используя следующий набор данных:
$scope.enquiries = [
{ENQUIRY_CODE: 'ENQUIRY_1', ENQUIRY_NAME: 'First Enquiry', selected: false},
{ENQUIRY_CODE: 'ENQUIRY_2', ENQUIRY_NAME: 'Second Enquiry', selected: false},
{ENQUIRY_CODE: 'ENQUIRY_3', ENQUIRY_NAME: 'Third Enquiry', selected: false},
{ENQUIRY_CODE: 'ENQUIRY_4', ENQUIRY_NAME: 'Fourth Enquiry', selected: false}
];
Ипривязка поля selected
к вашим флажкам ng-model
<div ng-repeat="e in enquiries">
<input type="checkbox" ng-model="e.selected" />
{{e.ENQUIRY_NAME}}
</div>
Вы можете определить, какое из них проверено, просто взглянув на массив $scope.enquiries
и ища selected: true
(или false
, если выхотите знать те, которые не отмечены).
В javascript вы можете использовать простой Array Filter для получения выбранных значений как таковых:
$scope.enquiries.filter(e => e.selected);
Или, если вы хотите получить их в своемшаблон, вы также можете использовать filter
трубу как таковую:
{{(enquiries | filter:{selected:true})}}
Вот интерактивный plunkr , который вы можете просмотреть это.
РазноеПримечание. Если вы хотите что-то запустить, когда флажок установлен, вы все равно можете использовать ng-click
и запустить собственный код, однако я бы порекомендовал использовать ng-change
, так как есть другие способы изменить выбранное значениефлажок кроме щелчка.