AngularJS过滤日

时间:2015-01-04 01:01:42

标签: angularjs

我正在使用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

渲染的输出是: enter image description here

***更新1 ****

在注释掉数组键以从1开始并在注释掉getQuotes.php中的sort()函数之后,我现在已经注意到,无论排序是什么,脚本总是取最后一个键/值来自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);

1 个答案:

答案 0 :(得分:0)

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