我有形式的元素:擴展角濾波器,用於在數字陣列
{ number: 1, name: 'name1', selected:[100,400,210,103,102], ... },
{ number: 2, name: 'name2', selected:[100,400,210,104,102], ... },
{ number: 3, name: 'name3', selected:[100,103], ... }
(...其它串屬性)
我的目標是寫的有效角度濾波器使通過過濾$
屬性可能,而其他我也可以使用contains過濾器的函數過濾selected
數組。
請注意,命名屬性將在同一水平上 只匹配性,而特殊的$屬性將在同一水平 或更深匹配性能。例如。數組項目如
{name: {first: 'John', last: 'Doe'}}
將不匹配{name: 'John'}
,但會匹配{$: 'John'}
。
使用過濾器{$: 'name', selected[100,103]}
進行過濾應該例如返回上面的第一個和第三個元素。是否可以簡單地寫一個過濾器來過濾所選的(我所做的)並用另一個過濾器來鏈接它?或者,甚至有可能沒有編碼我自己的過濾器? 我的過濾代碼基本上是:
.filter('selectedFilter', function (underscore) {
return function (elements, filter) {
var result = [];
for (var idx in elements) {
var element = elements[idx];
if (underscore.intersection(element.selected, filter.selected).length === filter.selected.length) {
result.push(element[idx]);
}
}
return result;
}
}
我使用像這樣的過濾器:
<ion-item ng-repeat="element in vm.filtered = (vm.filterElements(vm.searchFilter))
track by $index"></ion-item>
其中
function filterElements (filter) {
var filteredElements = $filter('selectedFilter')(vm.elements, filter);
return filteredTrees;
}
您的期望過高了......寫自己的過濾器 – charlietfl
我這樣做,我可以與所選濾鏡陣列該過濾器。但是我無法再過濾'$'屬性。這是否可能與鏈接? – niklas
不知道沒有看到代碼 – charlietfl