2017-09-26 8 views
0

私はカスタムのフィルタを持っています。入力日付フィールドには、17/07/2017の形式で文字列を表示するための$ scopeフィルタがあります。誰も私のカスタムフィルタ関数で$スコープフィルタを使用する方法を助けることができます。

私のコントローラ機能

app.controller('OutletController', function ($scope, itemsFactory, $filter) { 
     itemsFactory.getItems().success(function (data) { 
      $scope.outlets = data; 
     }) 
     $scope.fromDate = $filter('date')($scope.from_date, "yyyy-MM-dd"); 
     $scope.toDate = $filter('date')($scope.to_date, "yyyy-MM-dd"); 
     $scope.format = function (from_date) { 
      $scope.fromDate = $filter('date')(from_date, "yyyy-MM-dd"); 
      //console.log($scope.fromDate); 
     } 
     $scope.format = function (to_date) { 
      $scope.toDate = $filter('date')(to_date, "yyyy-MM-dd"); 
      // console.log($scope.toDate); 
     } 
     $scope.parseInt = function (data) { 
      if (data == null) return ""; 
      return parseInt(data); 
     };}); 

私のhtml

<input type="date" ng-model="from_date" ng-change="format(from_date)"> 
    <input type="date" ng-model="to_date" ng-change="format(to_date)"> 

NGリピート

<tr ng-repeat="item in outlets | dateRange: {from_date:from_date, to_date:to_date, select: selected.field, select2: selectedone.field} "> 
      <td>{{ parseInt(item.offerID) }}</td> 
      <td>{{ item.merchant }}</td> 
      <td>{{ item.startDate }}</td> 

私のカスタムフィルタ

app.filter('dateRange', function ($filter) { 
     return function (input, params, fromDate, toDate) { 
      var from_date = fromDate; 
      var to_date = toDate; 
      if (isNaN(params.fromDate)) { 
       filtered = input; 
      } 
      else { 
       var filtered = []; 
       angular.forEach(input, function (item) { 
        if (params.select2 === "strtdate" && params.select === "gt") { 
         console.log(fromDate); 
         if (item.startDate > params.from_date) { 
         filtered.push(item); 

             }} 
        else { 
        if (item.startDate == params.fromDate) { 
     output.push(item); 
     }} 
       }); 
      } 
      return filtered; 
     }; 
    }); 

入力日付を彼のfrom_dateフィールドに入れるたびに、データテーブルの入力日付よりも日付をフィルタリングする必要があります。

ありがとうございます!

答えて

0

コードの下にこのようなものを試すことができます。また、このシナリオの場合はplunkerリンクをチェックしてください。

テンプレート:

<input type="date" ng-model="Range.From"> 
    <input type="date" ng-model="Range.To"> 
    <table border="1"> 
     <tr ng-repeat="item in outlets | dateRange: Range"> 
     <td>{{ item.offerID }}</td> 
     <td>{{ item.merchant }}</td> 
     <td>{{ item.startDate | date: 'yyyy-MM-dd' }}</td> 
     </tr> 
    </table> 

コントローラー:

app.filter('dateRange', function ($filter) { 
    return function (input, params) { 
    if(params.From || params.To){ 
     var filtered = []; 
     angular.forEach(input, function (item) { 
     var strDate = new Date(item.startDate); 
     if(item.startDate >=params.From && item.startDate <= params.To){ 
      filtered.push(item); 
     }else if(item.startDate >= params.From && (params.To===null || params.To===undefined)){ 
      filtered.push(item); 
     }else if(item.startDate <= params.To && (params.From===null || params.From===undefined)){ 
      filtered.push(item); 
     } 
     }); 
     return filtered; 
    } else return input; 
    }; 
}); 
+0

はあなたに氏イマヌエルKirubaharanありがとうございました。この関数では、>< , < >が動作しています。私の問題は==であり、!=は動作していません。私のために解決策を教えてください。 –

関連する問題