2015-08-05 3 views
0

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

var test=[ 

{ 

"title": "random stuff", 

"path": "/random_stuff.html", 

"labels": [ 

    { 
    "term": "viewed", 
    "probability": 0.083 
    }, 

    { 
    "term": "firefox", 
    "probability": 0.083 
    }, 

    { 
    "term": "cookies", 
    "probability": 0.083 
    }, 

    { 
    "term": "times", 
    "probability": 0.055 
    }, 

], 

} 
]; 

HTML:

<input class="looking" type="text" ng-model="data.keywords"/> 
<li ng-repeat="se in searchCtrl.data.pages | orderBy : '-views' | filter: ??" > 

в data.keywords приходят отсюда:

var id=$routeParams.teamId; 
var context=this; 

context.data = { 
    pages:[], 
    keywords:id, 
    isLogged:false 
}; 

Потому что мне нужно первые результаты будут показали из ID в URL.

+0

Is это шов «страниц» так же, как тестовый массив? –

+0

тестовый массив получен из документа, а страницы i инициализируются в контроллере – voidcurser

+0

на каком свойстве вы хотите применить фильтр? –

ответ

0

Взятые из angularjs документации:

friendObj in friends | filter:{$: 'your filter'} 

Объект шаблона может быть использован для фильтрации определенных свойств объектов, содержащихся в массиве

Обратите внимание, что поименованное свойство будет соответствовать свойствам на тот же уровень , в то время как специальное свойство $ будет соответствовать свойствам на том же уровне или глубже.

Открыть expression раздел: filter documentation

<div ng-controller="MyCtrl"> 
    <input type="text" data-ng-model="search" /> 
    <ul> 
    <li data-ng-repeat="page in list.pages | filter: {$: search}">{{page.title}}</li> 
    </ul> 
</div> 

var myApp = angular.module('myApp', []); 

myApp.controller('MyCtrl', ['$scope', function ($scope) { 
    $scope.list = { 
    pages: [{ 
     "title": "random stuff1", 
      "path": "/random_stuff.html", 
      "labels": [{ 
      "term": "viewed", 
       "probability": 0.083 
     }, { 
      "term": "firefox", 
       "probability": 0.083 
     }, 

     { 
      "term": "cookies", 
       "probability": 0.083 
     }, { 
      "term": "times", 
       "probability": 0.055 
     }, ], 
    }, { 
     "title": "random stuff2", 
      "path": "/random_stuff.html", 
      "labels": [{ 
      "term": "viewed", 
       "probability": 0.083 
     }, { 
      "term": "firefox", 
       "probability": 0.083 
     }, 

     { 
      "term": "cookies", 
       "probability": 0.083 
     }, { 
      "term": "my name", 
       "probability": 0.078 
     }, ], 
    }] 
}; 
}]); 

Пожалуйста, см рабочий пример: https://jsfiddle.net/1j5fnrd6/

типа 'мое имя', и вы увидите фильтр применяется на случайном stuff2

+0

уже используют это, но работать с dindt наиболее похожий, я нашел с моей проблемой, это было http://www.ngroutes.com/questions/AUuACS2Aa5vEqxqlK04O/angular-js-filtering-nested-array-in-controller.html, но так как мой " query 'является data.keywords im, неспособным реализовать его: \ im пытается найти новый способ – voidcurser

+0

, пожалуйста, см. обновленный ответ с примером –

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