AngularJS 过滤日

AngularJS filter day

我正在使用 AngularJS 构建每日励志名言应用程序。当前日期(或该月的第几天,即:1 月 1 日)应提取报价 ID 1。 我在添加日期过滤器方面得到了一些帮助,因此脚本根据当天从数据库中提取报价,但日期过滤器没有提取正确的报价 ID。

在 app.js 我有:

var app = angular.module('app',[]);
app.controller('TimeCtrl', function($scope, $filter, $http, $timeout) {
  $http.post('ajax/getQuotes.php').success(function(data){

     $scope.quote = data;
     console.log($scope.quote);
  });
   $scope.dayNumber = $filter('date')(new Date(), 'd');
   console.log(  $scope.dayNumber );

});

在我的视图中:

<html>

<head>
  <meta charset="UTF-8" />
  <title>require moment</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>

<body ng-app="app">
  <div ng-controller="TimeCtrl">
  <p>
    {{dayNumber}} <br />
    {{"id is: " +quote[dayNumber].id + ": " +quote[dayNumber].quote}}<br />

---==--------==------<br />
   {{quote}}<br />

    </p>
  </div>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js"></script>

<script src="app/app.js"></script>
</body>

</html>

在 getQuotes.php 我有:

<?php
include('../includes/config.php');

$query="select id,quote from quotes order by id desc";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

$arr = array();

if($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $arr[] = $row;  
    }
}

//start arr at key 1 instead of starting at 0
$arr = array_combine(range(1, count($arr)), array_values($arr));

//sort obj to be in order
sort($arr);

# JSON-encode the response
$json_response = json_encode($arr);

// # Return the response
echo $json_response;

?>

目前,我将我的电脑日期设置为2015年1月1日,所以在下面截图的第一行,1是1月1日。在此之下,过滤器正在提取引用 id 2 而不是提取引用 id 1

渲染输出为:

*** 更新 1 ****

在注释掉从 1 开始的数组键和注释掉 getQuotes.php 中的 sort() 函数之后,我现在注意到,无论排序是什么样的,脚本总是采用最后 key/value 来自 db.

//start arr at key 1 instead of starting at 0
//$arr = array_combine(range(1, count($arr)), array_values($arr));

//sort obj to be in order
//sort($arr);

因为数组索引从0开始,quote[1]将是第二个元素。