2014-11-18 6 views
0

Это может быть просто, но я не уверен, как это сделать. Я создал два области действия массива (не уверен, если это требуется в контроллере) и мой фактический список в контроллереangularjs фильтр из массива, который содержит объект

$scope.tagFilter = [{tag_id:1,tag_name:test},{tag_id:2,tag_name:test2}]; 
$scope.categoryFilter = [{cat_id:1,cat_name:test3},{cat_id:2,cat_name:test4}] 

мой фактический список

$scope.list = [{list_id:1,category_id:1,tag:1},...] 

Можно ли создать фильтр, где я могу сравнить tag_id с тегом в списке и cat_id с cATEGORY_ID Я думал о создании angular.module.filter, но на самом деле не знаю, как это сделать

ответ

1

Вы можете написать filter функцию, которая ведет себя в Follo крыло:

var allowed_tags = $scope.tagFilter.map(function(item){ 
    return item.tag_id; 
}) 

var allowed_cat = $scope.categoryFilter.map(function(item){ 
    return item.cat_id; 
}) 

var filtered = $scope.list.filter(function(i){ 
return ((allowed_tags.indexOf(i.tag) != -1) && 
     (allowed_cat.indexOf(i.category_id) != -1)); 
}) 

console.log(filtered); 
+0

Я очень новичок в angularjs, так что это отбрасывает меня. Я понимаю, что вы пытаетесь сделать, но можете ли вы рассказать мне, как работает .map, соответствует ли элемент с tag_id с каждым объектом и где именно я буду размещать этот код. Это происходит в контроллерах? –

Смежные вопросы