gpt4 book ai didi

javascript - angularJs - 如何获取过滤数组

转载 作者:行者123 更新时间:2023-12-03 05:28:50 24 4
gpt4 key购买 nike

我有一个移动指令,其中包含以下列表 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 个项目。

如何修改我的代码以仅获取经过过滤的项目?另外,我不必输入过滤条件,因此当过滤条件中未输入任何内容时,它应该可以正常工作。

最佳答案

我解决了这个问题 - 结果非常简单。我在顶部添加了以下代码

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);

现在只有过滤的项目会被移动。

关于javascript - angularJs - 如何获取过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41040393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com