2013-09-12 5 views
0

Я просматриваю документы с угловыми углами, и я не могу лучше документировать материал.Угловой фильтр фабрики - Не удается получить данные, переданные в фильтр

Моя проблема заключается в следующем:

У меня есть фильтр:

.filter('filteringService', function() { 
     return function (photos, categsList) { 
      if (photos !== undefined) { 
       var filteredPosts = []; 
       console.log('Categories or Selected Categories:'); 
       console.log(categsList); 
       //DEVEL Only, assign a SEARCH value, can't pass the data from the list now. 
       categsList = 'people'; 
       if (categsList === undefined) { 
        for(i=0; i < photos.length; i++) { 
         filteredPosts.push(photos[i]); 
        } 
       } else { 
        console.log('Trying to push a category slug to search for.'); 
        //TASK: Convert in multiple possible selections. 
        filteredPosts = []; 
       } 

       console.log('Filter returns ' + filteredPosts.length + ' posts'); 
       return filteredPosts; 
      } 
     }; 
    }); 

И я шаблону

<div class="photos"> 
    <div class="filters"> 
     <ul> 
      <li><a>ALL</a></li> 
      <li ng-repeat="category in categsList"> 
       <a ng-checked="category[0]" ng-model="category[0]">{{ category[1] }}</a> 
      </li> 
     </ul> 
    </div> 
    <ul class="photos-list"> 
     <li ng-repeat="photo in photos|filteringService:category"> 
      <h1>{{ photo.title }} click <a href="#/photos/{{ photo.slug }}"> LINK</a></h1> 
      <ul class="categories"> 
       <li ng-repeat="category in photo.categories"> 
        {{ category.title }} 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

Там огромный объект с сообщениями под названием photos, а затем есть список категорий под названием categsList.

Объект фотографий имеет элементы из списка категорий в нем. Я ХОЧУ иметь возможность фильтровать с помощью элемента CLICKED через этот список и, возможно, с несколькими фильтрами, но сначала передать фактическое значение фильтра службе фильтра, Я, похоже, не могу этого сделать.

Как мне это сделать?

+0

Я знаю, что с помощью флажков я передам только выбранные значения, но на самом деле этот пример здесь не применим. Я вижу, что с помощью 'ng-click' фильтр запускается снова, но данные не передаются ему. '{{ category[1] }}' –

ответ

0

Видимо, мне удалось передать значение фильтра, в грязном пути (я думаю), как этот

<a ng-bind="category.slug" ng-click="returnFilter(category.slug);" ng-model="category.slug">{{ category.title }}</a> 

он идет здесь

$scope.returnFilter = function(theSlug) { 
      $scope.filterBy = theSlug; 
     }; 

и выходит здесь

<li ng-repeat="photo in photos|filteringService:filterBy"> 

Это работает, но Это правильно?


EDIT: Кроме того, с таким образом в виду, я мог бы передать массив как theSlug, так что я могу сделать несколько фильтрации, и при нажатии два раза на тот же товар, что бы получить его из массива. хммм


EDIT 2:

Допустим, результирующий массив находится под 15 пунктов, мог ли я запускать какие-то действия в контроллере, зная это?

На самом деле, наоборот, могу ли я запросить у контроллера результирующий массив, который выдает фильтр?

Я не могу $ смотреть первый массив, я думаю, фильтр создает новый массив и помещает эти результаты на страницу. Как я могу посмотреть результирующий массив для изменений и сделать что-то в контроллере?

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