2014-02-03 2 views
0

У меня есть файл JSON с задачами. Они структурированы следующим образом:Фильтр по элементам в массиве в AngularJS

[ 
{ 
    "id":"1", 
    "name":"task1", 
    "tags":["tag1","tag2","tag3"] 
}, 
{ 
    "id":"2", 
    "name":"task2", 
    "tags":["tag4","tag2","tag5"] 
}, 
{ 
    "id":"3", 
    "name":"task3", 
    "tags":["tag3"] 
} 
] 

Вот Plunkr за то, что я хочу http://plnkr.co/edit/kMhiHDyybHYxGfV7W39z?p=preview

В принципе, это то, что я хочу: http://jsfiddle.net/TahmidTanzim/N9Vqk/

Я просмотрел различные SO вопросы и все они что я делаю это правильно. Однако я не понимаю, где я ошибаюсь. Я хочу только те задачи, которые содержат выбранный таг, который будет отображаться в красном списке.

Спасибо!

ответ

1

Просто измените фильтры, чтобы сравнивать внутренние теги с использованием массивов.

myapp.filter('tagFilter',function() 
{ 
    return function(Data,selectedTags) 
    { 
     if(selectedTags.length===0) return Data; 
     var tempData=[]; 
     for(var i in Data) { 
      for(var z in Data[i].tags) { 
       for(var k in selectedTags) { 
        var value = selectedTags[k]; 
        if(value == Data[i].tags[z]) { 
         tempData.push(Data[i]); 
         break;    
        } 
       } 
      } 
     } 
     return tempData; 
    } 
}); 
+0

The Plunkr работает нормально, но кажется, что фильтр не в состоянии получить выбранный массив Tags. Я попробовал console.log (selectedTags) в фильтре, и он оказался пустым в моем приложении! – SLearner

+0

Я только что отредактировал код, я протестировал его в Plunker. Не могли бы вы попробовать еще раз? – cardeol

+0

Вы пытались изменить свою угловую версию (используя то же, что и плункер)? – cardeol

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