我有一个由函数生成的数据结构。它以相反的顺序返回最后30天(如11,10,9,8等)作为对象数组。
function HoursCtrl($scope) {
$scope.days = function () {
var d = new Date();
var result = [];
for (i = 0; i < 31; i++) {
result.unshift({day:d.getDate() });
d.setDate(d.getDate() - 1);
}
return result;
};
};
这是函数的输出:
[ { day: 9 }, { day: 8 }, { day: 7 }, { day: 6 }, { day: 5 }, etc. ]
我正在使用ng-repeat将此数据公开为列表:
<div ng-controller="HoursCtrl">
<ul>
<li ng-repeat="day in days">{{day.day}}</li>
</ul>
</div>
没有生成li元素!我错过了什么?
答案 0 :(得分:3)
您需要将其称为功能。
ng-repeat="day in days()"
答案 1 :(得分:3)
不要在作用域上设置函数作为方法,只需在作用域上填充days
属性:
function HoursCtrl($scope) {
var d = new Date();
$scope.days = [];
for (var i = 0; i < 31; i++) {
$scope.days.unshift({day:d.getDate() });
d.setDate(d.getDate() - 1);
}
};
为了获得更好的效果,您可以尝试反向循环并使用push
代替unshift
:
function HoursCtrl($scope) {
var d = new Date();
var counter = 31;
var date = d.getDate();
$scope.days = [];
d.setDate(date - counter + 1);
while ( counter-- ) {
date = d.getDate();
$scope.days.push({ day: date });
d.setDate(date + 1);
}
};