2014-06-19 36 views
1

我想根據之前選擇的用戶權限重新填充一組複選框。AngularJS顯示元素如果在陣列中

我創建了一個權限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?感謝您的任何建議。

回答

0

使用indexOf

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

真棒,謝謝@merlin!不知道indexOf(),我還是JavaScript和AngularJS的新手。感謝幫助! –

+0

@MitchGlenn如果你想支持舊的瀏覽器,請看看'Array.prototype.indexOf']的兼容性表格(http://kangax.github.io/compat-table/es5/)。 – merlin