【发布时间】:2016-12-08 13:13:04
【问题描述】:
我有一个带有以下 html 列表的移动指令
<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 个,我只想在按下按钮时移动这 5 个项目,而不是我什至在屏幕上看不到的所有 642 个项目。
如何修改我的代码以仅获取已过滤的项目?另外,我不必输入过滤条件,所以当过滤条件中没有输入任何内容时它应该可以正常工作。
【问题讨论】:
标签: javascript html angularjs filter