【发布时间】:2016-09-28 15:20:52
【问题描述】:
我已经为这个问题摸索了好几个小时,但我似乎无法弄清楚,所以想知道你们是否可以提供帮助。
我在 json 文件中有一组对象,我正在根据文件中的不同属性制作过滤菜单,人们可以在视图中选中/取消选中以过滤结果。我遇到的问题是能够取消选中菜单中由于在当前显示的结果中不可用而隐藏的任何项目。
我在这里有一个 plunker 示例:https://plnkr.co/edit/KZmMiSisA1gKyahG5rHF
来自 plunker 的样本:
$scope.list = [
{ parent : 'fruit', type : 'orange' },
{ parent: 'fruit', type : 'apple' },
{ parent : 'fruit', type : 'kiwi' },
{ parent : 'vegetable', type : 'kale' },
{ parent : 'vegetable', type : 'cabbage' }
];
$scope.filtered = $scope.list;
$scope.selectedType = [];
$scope.selectedParent = [];
$scope.$watch(function () {
return {
selectedType: $scope.selectedType,
selectedParent: $scope.selectedParent,
}
}, function (value) {
var filterType = {
parent : $scope.selectedParent,
type : $scope.selectedType,
};
var startFilter = $scope.list;
for (var i in filterType) {
startFilter = filter(startFilter, filterType[i], i);
}
$scope.filtered = startFilter;
}, true);
基本上,如果有人选择“水果”然后选择“橙色”,然后取消选中“水果”,我希望“橙色”也取消选中。
【问题讨论】:
-
plunker 不运行。再次检查链接。
-
现在可以用了吗?对不起!我想我一旦让它正常工作就没有更新。
-
问题是 selectedType 在取消选中时没有被清除。所以在 $watch 中你可以检查 selectedParent 项并从 selectedType 拼接它们。
-
我知道,但问题是两个数组之间没有引用,我不确定如何进行检查。
标签: angularjs ng-repeat watch angular-filters checklist-model