2016-12-08 1 views
0

나는 목록은 다음과 같은 HTML과 발동기 지시어를AngularJS와는 - 어떻게 필터링하려면 배열

<select class="select-list" multiple 
 
         ng-model="unassigned" 
 
         name="unAssignedList" 
 
         data-no-dirty-check 
 
         ng-options="unassignedItem.descrip for unassignedItem in unassignedItems | orderBy:'descrip' | filter: filterCriteria"></select>
그래서

, 나는이 지시어를 사용하면 내가 좋아하는 내 필터 기준을 지정할 수 있습니다 이

<data-sm:duallist-directive ng-required="false" keep-pristine="true" 
 
              unassigned-items-title="'@String.Format(Labels.availableX, Labels.items)'" 
 
              unassigned-items="currentItemGroup.unassignedItems" 
 
              assigned-items-title="'@String.Format(Labels.assignedX, Labels.items)'" 
 
              assigned-items="currentItemGroup.assignedItems" 
 
              sortable="false" 
 
              filter-criteria="{categoryId:selectedCategoryId}" 
 
              selected-item="currentItemGroup.selectedItem"> 
 
       </data-sm:duallist-directive>

MoveAllLeft (또는 MoveAllRight) 단추에 문제가 있습니다.

$scope.moveRightAll = function() { 
 
        var unassignedItems = $scope.unassignedItems.slice(0); 
 
        var smItems = $scope.unassignedItems.slice(0); 
 

 
        angular.forEach(smItems, function (value, key) { 
 
         $scope.assignedItems.push(value); 
 
         removeItem(unassignedItems, value); 
 
        }); 
 
        $scope.unassignedItems = unassignedItems; 
 
        if (!$scope.keepPristine) 
 
         $scope.form.$setDirty(); 
 
        
 
        $scope.assigned = null; 
 
       };

문제는 그것이 원래 필터링되지 않은 배열에 대해 작동한다는 것입니다 : 그들은 다음과 같은 코드가 있습니다. 말하자면, 총 642 개의 항목이 있고 범주별로 5 개만 필터링 한 경우 화면에 표시되지 않는 642 개가 아닌 내 버튼을 누르면이 5 개 항목 만 이동하려고합니다.

필터링 된 항목 만 가져 오도록 코드를 수정하려면 어떻게해야합니까? 또한 필자는 필터 기준을 입력 할 필요가 없으므로 필터 기준에 아무 것도 입력되지 않으면 올바르게 작동해야합니다.

답변

1

나는이 문제를 해결했다. 그것은 매우 쉬운 것으로 판명되었다. 나는 맨

하고 이제 필터링 된 항목이 이동

var filteredData ; 
 
        if ($scope.filterCriteria) 
 
         filteredData = $filter('filter')($scope.unassignedItems, $scope.filterCriteria); 
 
        else 
 
         filteredData = $scope.unassignedItems; 
 

 
        var unassignedItems = filteredData.slice(0); 
 
        var smItems = filteredData.slice(0);
다음 코드를 추가했다.