如何将$示波器变量包括在自定义过滤器功能中



我有一个自定义过滤器,对于输入日期字段,我有一个$ scope滤波器以在2017年7月7日以17/07/2017显示字符串。任何人都可以帮助我如何在我的自定义过滤器功能中使用$示波器过滤器。

我的控制器功能

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;
        };
    });

每当将输入日期放在_date字段中时,它应该过滤日期>比数据表的输入日期。

预先感谢!

您可以在代码下尝试类似的内容,还可以使用此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;
  };
});

最新更新