#javascript #php #arrays #angularjs #checkbox
#javascript #php #массивы #angularjs #флажок
Вопрос:
Я пытаюсь повторно заполнить группу флажков на основе ранее выбранных пользовательских разрешений.
Я создал массив идентификаторов разрешений и хочу сравнить входной элемент с массивом идентификаторов и отобразить флажок как установленный, если они совпадают, в противном случае отобразить флажок без флажка.
Вот как я создал $scope.assigned
массив:
$scope.user.$promise.then(function(result) {
$scope.user = resu<
$scope.assigned = [];
angular.forEach($scope.user.permissions, function(value, key) {
this.push(value.id);
}, $scope.assigned);
console.log($scope.assigned);
Когда $scope.assigned
он регистрируется в консоли, у меня остается массив, например, ["2", "3", "4"]
представляющий ранее выбранные идентификаторы разрешений. Теперь я хочу сравнить их с permissions.id
представление:
<h4>Manage Permissions</h4>
<div class="form-group" ng-repeat="permission in permissions">
<label>
<input ng-if="permission.id == assigned" type="checkbox" ng-checked="true" checklist-model="user.permissions" checklist-value="permission.id" class="checkbox-inline">
{{ permission.display_name }}
</label>
</div>
<button class="btn btn-success" type="submit">Save</button>
Я думал, что мог бы сделать что-то вроде ng-if="permission.id == assigned"
, но это не работает. Мне нужен способ проверить, есть ли permission.id соответствует всему, что находится внутри назначенного.
Ранее я делал это в PHP следующим образом: if(in_array($permission['id'], $assigned))
Как я могу выполнить это в AngularJS? Спасибо за любой совет.
Ответ №1:
Используйте indexOf
:
ng-if="assigned.indexOf(permission.id) != -1"
Комментарии:
1. Потрясающе, спасибо @merlin! Не знал об indexOf(), я все еще новичок в JavaScript и AngularJS. Спасибо за помощь!
2. @MitchGlenn Также взгляните на таблицу совместимости
Array.prototype.indexOf
, если вы хотите поддерживать старые браузеры.