Я считаю, что для их проверки вам нужно установить ng-model
в true или false.Просто создайте другой массив и заполните его соответствующим образом.
У вас есть возможность добавить существующий массив с новыми свойствами, которые будут содержать значения true / false, или создать новый массив, который был сопоставлен с исходным.Затем просто переключите значения по умолчанию false
на true
, если указан их идентификатор, который можно получить, разбив строку.
Вот небольшая демонстрация:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.amenities = [
{id:1,value:"Wifi"},
{id:2,value:"AC"},
{id:3,value:"Creditcard"},
{id:4,value:"24x7"},
{id:5,value:"Parking"},
{id:6,value:"Free delivery"},
{id:7,value:"No Smoking"}
];
//For example assume that this is existing amenities from database
$scope.existamenities = "1,3,7";
var a = $scope.existamenities.split(",").map(x => Number(x))
var b = $scope.amenities.map((x) => {
return {
"id": x.id,
"val": false
}
})
for (var i = 0; i < b.length; i++) {
for (var j = 0; j < a.length; j++) {
if (b[i].id == a[j]) {
b[i].val = true
}
}
}
$scope.model = b;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<div ng-repeat="amn in amenities">
<label>{{amn.value}}
<input type="checkbox" name="amenities" ng-model="model[$index].val" ng-value="amn.id">
</label>
</div>