我正在使用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()函数之后,我现在已经注意到,无论排序是什么,脚本总是取最后一个键/值来自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 :(得分:0)
这是因为数组索引从0开始。[1]将是第二个元素。