2016-09-07 2 views
0

Bonjour à tous je veux filtrer les éléments comme (Date de début et de fin) qui est basé sur Due_date en utilisant la fonctionnalité daterange dans meanjs app. puis j'ai essayé plusieurs façons, mais incapable d'obtenir la solution si quelqu'un connaît la solution s'il vous plaît aidez-moi ..... My PlunkAngularjs Filtrage du champ en fonction de la date de début et de la date de fin?

  • S'il vous plaît regarder mon plunker référencer. J'ai l'affichage Due_date, donc c'est le champ que je veux utiliser pour le filtrage. J'ai utilisé une fonctionnalité pour ajouter invoice_Date et terms, qui fournit la réponse comme Due_date. pour exmple: - INVOICE_DATE: 2016-09-10, les termes: 6, la réponse que je suis DUE_DATE: 16-09-2016

  • donc ce que je recherche excatly pour, je veux faire un filtrage du Due_date comme date de début et de fin: par exemple: - si nous sélectionnons la date de début comme 16-09-2016 et que la date de fin est 25-09-2016 dans le tableau ces deux transactions ont seulement besoin d'afficher ou de filtrer ... donc j'ai utilisé le filtre daterange pour réaliser cette solution, mais incapable d'obtenir la solution s'il vous plaît aidez-nous.

  • le filtre daterange fonctionne parfaitement si nous utilisons ng_module est invoice_date, mais nous ne savons pas comment filtrer le Due_date déposé s'il vous plaît nous aider .... My Plunker

Controller:

.filter('dateRange', function() { 
    return function(records, dateKey, from, to) { 
     return records.filter(function(record) { 
     return !moment(record[dateKey], 'YYYY-MM-DD').isBefore(moment(from)) 
       && !moment(record[dateKey], 'YYYY-MM-DD').isAfter(moment(to)); 
      }); 
     } 
    }) 

Html:

<input type="date" class="form-control" name="from" ng-model="from"> 

<input type="date" class="form-control" name="to" ng-model="to"> 

Filtre: -

ng-repeat="data in record | dateRange : 'invoice_date' : from : to" 

Ce en dessous de la nécessité déposé pour filtrer dans le tableau: -

DUE_DATE: -

<td> {{addDays(data.invoice_date,data.terms) | date:'dd-MM-yyyy'}}</td> 
  • J'ai créé plunker pour référence: - My plunker

Répondre

2

Vous pouvez créer un filtre personnalisé pour cette

HTML

<tr ng-repeat="data in record | myfilter:from:to"> 
    <td> {{data.supplier_name}}</td> 
    <td> {{data.invoice_date}}</td> 
    <td> {{data.terms}}</td> 
    <td> {{addDays(data.invoice_date,data.terms) | date:'yyyy-MM-dd'}}</td> 
</tr> 

JS

app.filter("myfilter", function() { 
     return function(items, from, to) { 
      var df = from; 
      var dt =to; 
      var result = []; 

      for (var i=0; i<items.length; i++){ 
       var date = new Date(items[i].invoice_date); 
       date.setDate(date.getDate() + parseInt(items[i].terms)); 
       var tf = date; 
       if (tf > df && tf < dt) { 
        result.push(items[i]); 
       } 
      } 
      return result; 
     }; 
    }); 
+1

http://plnkr.co/edit/qxqVJmpl3T88eZV5oWrX?p = preview voir ce plunker –

+1

merci pour le plunker mis à jour ... Le filtre de date de début fonctionne parfaitement, si on sélectionne Date de fin il ne montre pas la transaction correcte dans table..example: - startdate: - 16-09-2016 puis si on sélectionne date de fin comme 28-09-2016, il devrait devoir afficher trois transaction, mais seulement deux transaction affiche dans la table alors s'il vous plaît vérifier et mettre à jour ... merci ... –

+0

S'il vous plaît changer le mois à Septembre en premier lieu à ce jour. Actuellement, il est fixé à octobre –