AngularJS显示元素,如果它在数组中

时间:2014-06-19 03:46:27

标签: javascript php arrays angularjs checkbox

我正在尝试根据之前选择的用户权限重新填充一组复选框。

我创建了一个权限ID的数组,并希望将输入元素与id的数组进行比较,如果匹配则显示复选框,否则显示未选中的复选框。

这就是我创建$scope.assigned数组的方式:

$scope.user.$promise.then(function(result) {
    $scope.user = result;
    $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"]的数组,代表以前选择的权限ID。现在我想将它们与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 个答案:

答案 0 :(得分:0)

使用indexOf

ng-if="assigned.indexOf(permission.id) != -1"