angularJS:过滤JSON数据w.r.t日期范围

angularJS:过滤JSON数据w.r.t日期范围,angularjs,angular-ui,angularjs-filter,Angularjs,Angular Ui,Angularjs Filter,我对AngularJS完全陌生。这是我的HTML代码 <div ng-controller="DateRangeCtrl"> <div class="container"> <div class="form-horizontal"> <input type="text" datepicker-popup="MM-dd-yyyy" ng-model="dt1" is-open="opened1" max="

我对AngularJS完全陌生。这是我的HTML代码

<div ng-controller="DateRangeCtrl">

      <div class="container">
        <div class="form-horizontal">
          <input type="text" datepicker-popup="MM-dd-yyyy" ng-model="dt1" is-open="opened1" max="maxFromDate" ng-change="setMinToDate()"/>
          <button class="btn btn-sm" ng-click="open1($event)"><span class="glyphicon glyphicon-calendar"></span></button>
        </div>
        <div class="form-horizontal">
            <input type="text" datepicker-popup="MM-dd-yyyy" ng-model="dt2" is-open="opened2" min="minToDate" max="maxToDate" ng-change="filterDateAdded()"/>
            <button class="btn btn-sm" ng-click="open2($event)"><span class="glyphicon glyphicon-calendar"></span></button>
        </div>

        <p><strong>Selected From Date: </strong> {{dt1 | date:'mediumDate'}}</p>
        <p><strong>Selected To Date: </strong> {{dt2 | date:'mediumDate'}}</p>
      </div>
      <hr />
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>ID</th>
            <th>Date Added</th>
          </tr>
        </thead>
        <tbody>
          <tr ng-repeat="item in items | orderBy:mySortFunction ">
            <td>{{item.ID}}</td>
            <td>{{ parseDate(item.dateAdded) | date:'longDate'}}</td>
          </tr>
        </tbody>
      </table>

    </div>
如何根据所选日期筛选行?例如,如果我在“日期选择器”中的“”中选择“01/01/2014”,那么我应该能够看到其“添加日期”列的值大于“2014年1月1日”的所有行。输出将是ID为4和5的行

当选择了到“日期选择器时,它的行为应该与文本等效

请帮帮我。我卡住了

更新: HTML


JS

$scope.dateFilter=函数(项){
返回(item.dateAdded<$scope.dt2);
};

我做错什么了吗?它仍然不起作用

像这样更改代码

    <input type="text" datepicker-popup="MM-dd-yyyy" ng-model="dt2" is-open="opened2" min="minToDate" max="maxToDate" ng-model="search" ng-change="filterDateAdded()"/>


     <tr ng-repeat="item in items | filter:dateFilter">



 $scope.filterDateAdded=function()
    {

                 $scope.dateFilter = function () {
                  var result=[];
                   for(var i in $scope.item)
                    {  if($scope.item[i].dateAdded >$scope.search)
                           {
                                   result.push($scope.item[i]);
                                 }

                           }
              return result;
          };
    }

$scope.filterDateAdded=函数()
{
$scope.dateFilter=函数(){
var结果=[];
用于(变量i在$scope.item中)
{if($scope.item[i].dateAdded>$scope.search)
{
结果推送($scope.item[i]);
}
}
返回结果;
};
}

通过某种hit n试验方法,我最终成功了。问题是“item.dateAdded”字符串必须转换为日期对象。解决方案是在js文件中添加以下代码:

$scope.filterDateAdded = function (){
if($scope.dt1 != null)
{
  $scope.dateFilter = function (item) {
    return ($scope.parseDate(item.dateAdded) >= $scope.dt1 && $scope.parseDate(item.dateAdded) <= $scope.dt2);
  };
}
$scope.filterDateAdded=函数(){
如果($scope.dt1!=null)
{
$scope.dateFilter=函数(项){

return($scope.parseDate(item.dateAdded)>=$scope.dt1&&$scope.parseDate(item.dateAdded)PS:我不想使用jQuery:)谢谢murugan!但是我该如何定义“搜索”过滤器呢?您能详细说明一下吗?请参阅nd model=“search”当您选择数据时,此搜索模型返回日期,然后在IntemItems contain对象中使用filter函数意味着您的数据,因此filter select related data from this object(项目)filter是预定义函数Just i pass参数(ng model=“search”)
$scope.dateFilter = function (item) {
          return (item.dateAdded < $scope.dt2);
      };
    <input type="text" datepicker-popup="MM-dd-yyyy" ng-model="dt2" is-open="opened2" min="minToDate" max="maxToDate" ng-model="search" ng-change="filterDateAdded()"/>


     <tr ng-repeat="item in items | filter:dateFilter">



 $scope.filterDateAdded=function()
    {

                 $scope.dateFilter = function () {
                  var result=[];
                   for(var i in $scope.item)
                    {  if($scope.item[i].dateAdded >$scope.search)
                           {
                                   result.push($scope.item[i]);
                                 }

                           }
              return result;
          };
    }
$scope.filterDateAdded = function (){
if($scope.dt1 != null)
{
  $scope.dateFilter = function (item) {
    return ($scope.parseDate(item.dateAdded) >= $scope.dt1 && $scope.parseDate(item.dateAdded) <= $scope.dt2);
  };
}