0

У меня есть массив объектов, повторяющийся на странице. У меня также есть список дат, расположенных в выпадающем списке. Если четверть, выбранная в выпадающем списке, появляется позже, чем элемент в повторном списке ng, этот элемент следует отфильтровать.Угловая пользовательская фильтрация по дате Квартал

К сожалению, я не могу заставить его работать. Вот мой HTML:

<div ng-app="programApp" ng-controller="programController"> 
    <select ng-model="advancedFiltersy"> 
    <option ng-repeat="indexitem in quarters">{{indexitem}}</option> 
    </select> 
    <div ng-repeat="item in listing | advFilterName:advancedFiltersy:quarters"> 
    {{item.name}} 
    </div> 
</div> 

Вот моя Угловая Сценарий:

angular.module('programApp', ['programApp.controllers','programApp.filters']); 
angular.module('programApp.controllers', []) 
    .controller('programController', ['$scope', '$filter', 
    function($scope, $filter){ 
     $scope.advancedFiltersy = 'zeroeth'; 
     $scope.quarters = ['zeroeth','first','second','third','fourth','fifth','sixth']; 
     $scope.listing = [{'name':'aa','aacApprovalIconQuarter':'zeroeth' 
     },{'name':'ab','aacApprovalIconQuarter':'first' 
     },{'name':'ac','aacApprovalIconQuarter':'second' 
     },{'name':'ad','aacApprovalIconQuarter':'third' 
     },{'name':'ae','aacApprovalIconQuarter':'fourth' 
     },{'name':'af','aacApprovalIconQuarter':'fifth' 
     },{'name':'ag','aacApprovalIconQuarter':'sixth'}]; 
    }]); 

angular.module('programApp.filters', []).filter('advFilterName', function(){ 
    return function(entries, advancedFiltersy, quarters){ 
     var advFiltered = []; 
     angular.forEach(entries, function (entry){ 
      if(quarters.indexOf(advancedFiltersy) > quarters.indexOf(entry.aacApprovalIconQuarter)){ 
      }else{ 
       advFiltered.push(entry); 
      }; 
     }); 
    }; 
}); 

Ни один из нг повторяемых элементов не всегда показывая, таким образом, фильтр не работает должным образом. Что мне нужно сделать, чтобы фильтр работал?

Вот Codepen его: http://codepen.io/trueScript/pen/MwbVpO

ответ

1

Вам все еще нужно, чтобы вернуть значение отфильтрованных результатов:

angular.module('programApp.filters', []).filter('advFilterName', function(){ 
    return function(entries, advancedFiltersy, quarters){ 
     var advFiltered = []; 
     angular.forEach(entries, function (entry){ 
      if(quarters.indexOf(advancedFiltersy) > quarters.indexOf(entry.aacApprovalIconQuarter)){ 
      }else{ 
       advFiltered.push(entry); 
      }; 
     }); 
     // Fix 
     return advFiltered; 
    }; 
}); 

Fixed здесь: http://codepen.io/anon/pen/LVbdQo?editors=101

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