AngularJS函数用于过滤数据

时间:2015-01-19 02:22:33

标签: angularjs

我在mysql数据库中有一个名为date的列,每个帖子都有不同的日期,如:2015-1-1
我创建了一个函数来检查今天的日期是否与mysql数据库中的日期相匹配,以便按日期过滤帖子。

这是我的app.js

  app.controller('TimeController', function($scope, $http) {
      $http.post('ajax/getQuotes.php').success(function(data){

         $scope.quote = filterByDate(data);

      });


      function filterByDate(input) {
          var date = new Date();

          var day = date.getDate();
          var month = date.getMonth() + 1;
          var year = date.getFullYear();
          var matchDate = year + "-" + day+ "-" + month;
          if( input[value] == matchDate){
              return data; 
          }


      }

但这不起作用,有什么建议吗?

2 个答案:

答案 0 :(得分:0)

两个问题:

  1. 为什么要首先提取所有数据然后再应用过滤器?为什么不将您的请求限制在服务器端的日期,只返回该日期的数据?

  2. 如果您想一次性提取所有数据,请使用ng-repeat中的过滤器。这样您的数据就是动态的,之后您仍然可以更改过滤器。

答案 1 :(得分:0)

您的过滤器代码没有任何意义。

  1. 您接受名为input的变量。
  2. 您使用今天的日期创建了一个新的date对象。
  3. 您将daymonthyear变量设置为从今天起的每月一天。
  4. 您根据matchDateyearday值手动构建名为month的字符串。
  5. 您尝试将matchDate变量与input上的数组索引进行比较,使用从未定义过的名为value的变量。由于某些原因,这绝不会评估为true,因为input[value]毫无意义。此外,您应使用===代替==
  6. 如果以某种方式将您的比较评估为true,则会尝试返回一个名为data的变量,该变量从未在函数中定义,因此肯定是null。< / LI>