基本上我想过滤到列表中的多个值。 我有一个名为items的过滤器列表,它代表下面列表中列表项的值。如果用户单击链接One,它将仅列出具有1作为值的listitems,单击Two列出值为2的listitems等。
主要问题来自名为OneTwo的链接,该链接应列出值为1或2的列表项,但我根本无法使其工作。我试图使用dot来包含多个值,但我无法使其工作。在示例中,我将OneTwo的值设置为“0”,但它应该类似于('1'。'2')。 代码和JSFiddle示例如下:
HTML:
<div ng-controller="FilterListController">
<ul>
<li ng-repeat="item in items">
<a ng-click="select(item)" ng-class="{active: item == selected}">{{item.name}}</a>
</li>
</ul>
<ul>
<li ng-repeat="listitem in list | filter:{value: selected.value}">
{{listitem.name}} - {{listitem.value}}
</li>
</ul>
</div>
JS:
var myApp = angular.module('myApp',[]);
function FilterListController($scope) {
$scope.list = [
{name: 'a', value: '1'},
{name: 'b', value: '2'},
{name: 'c', value: '3'}];
$scope.items = [{name: 'OneTwo', value: '0'},{name: 'One', value: '1'},{name: 'Two', value: '2'},{name: 'Three', value: '3'}];
$scope.selected = $scope.items[0];
$scope.select = function(item){
$scope.selected = item;
}
}
JSFiddle示例。
答案 0 :(得分:1)
您应该使用控制器中的自定义过滤器,然后显示列表
var myApp = angular.module('myApp',[]);
function FilterListController($scope, $filter) {
$scope.list = [
{name: 'a', value: '1'},
{name: 'b', value: '2'},
{name: 'c', value: '3'}];
$scope.items = [{name: 'OneTwo', value: '12'},{name: 'One', value: '1'},{name: 'Two', value: '2'},{name: 'Three', value: '3'}];
$scope.selected = $scope.items[0];
$scope.select = function(item){
$scope.selected = item;
$scope.resultList = $filter('filterMyList')($scope.list, item);
}
}
myApp.filter('filterMyList', function() {
return function(list, val) {
var newList = [];
for (var i in list) {
if(val.value.indexOf(list[i].value) !== -1) {
newList.push(list[i]);
}
}
return newList;
}
})
更新了JSFiddle: http://jsfiddle.net/bikiew/c7jQk/1/