2015-09-14 3 views
2

Я пытаюсь создать фильтр, используя массив объектов. но я не получаю ответ, как я просил.Как фильтровать массив объектов из значения основного объекта

объект, который я зацикливаю, хотя имеет 3 шага массивов. Я пытаюсь отфильтровать их и показать в элементе li, но не работает. для меня работает только первый шаг.

массив: «Имя , подпроектов and Contracts` (все вложенные внутри основного объекта)

вот моя попытка:

<div class="section filter1"> 
    <ul> 
    <li ng-repeat="value in values"> {{value.Name}}</li> 
    </ul> 
</div> 
<div class="section filter2"> 
    <ul> 
    <li ng-repeat="value in values | SubProjects"> {{$index}}</li> 
    </ul> 
</div> 
<div class="section filter3"> 
    <ul> 
    <li ng-repeat="value in values | SubProjects | Contracts"> {{value.Name}}</li> 
    </ul> 
</div> 

объект для образца:

{ 
    "Id": "1", 
    "Name": "Khalifa International Stadium", 
    "SubProjects": [ 
     { 
     "Contracts": [ 
      { 
      "CompletedPercentage": 0, 
      "Id": "583", 
      "Name": "LP/C21/145", 
      "Phase": null 
      }, 
      { 
      "CompletedPercentage": 0, 
      "Id": "529", 
      "Name": "KP/B21/134", 
      "Phase": null 
      }, 
      { 
      "CompletedPercentage": 0, 
      "Id": "575", 
      "Name": "LP/C21/142", 
      "Phase": null 
      } 
     ], 
     "Id": "2", 
     "Name": "Energy Center" 
     }, 

Live Demo

+1

не уверен, что вы подразумеваете под «значением в значениях | подпроектов», как синтаксис фильтра отличается, в любом случае проверить эти два источника https://docs.angularjs.org/api/ng/filter/filter и HTTPS: //www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=angularjs%20filter%20nested%20array –

+0

Я пытаюсь извлечь объекты из вложенных массивов с помощью фильтра , разве это невозможно? – 3gwebtrain

+0

все возможно! проверьте примеры из одних и тех же вопросов, попробуйте что-то, по крайней мере, фильтруя основной массив. создайте jsFiddle с вопросом, а затем кто-то может вам помочь. –

ответ

1

Необходимо для создания пользовательского фильтра в соответствии с вашим требованием здесь. См. Пример this, и дайте мне знать, если вы столкнетесь с какой-либо проблемой в своем деле. Для документации пожалуйста, check. Пример: simple пример с таким же подходом.

<input type="text" ng-model="search"> 
    <ul ng-repeat="oneauth in authorisations[0]"> 
     <li ng-repeat="entry in oneauth | nameFilter:search">  
    {{entry.auth.name}}</li> 
    </ul> 


    app.filter('nameFilter', function(){ 
    return function(objects, criteria){ 
     var filterResult = new Array(); 
      if(!criteria) 
      return objects; 

     for(index in objects) { 
      if(objects[index].auth.name.indexOf(criteria) != -1) // filter by name only 
       filterResult.push(objects[index]); 
      } 
      console.log(filterResult); 

     return filterResult; 
    }  
}); 
Смежные вопросы