Javascript ng重复不工作

Javascript ng重复不工作,javascript,arrays,object,angularjs,Javascript,Arrays,Object,Angularjs,我有一个由函数生成的数据结构。它以对象数组的形式返回过去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() });

我有一个由函数生成的数据结构。它以对象数组的形式返回过去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;
    };
};
我使用ng repeat将此数据作为列表公开:

<div ng-controller="HoursCtrl">
  <ul>
    <li ng-repeat="day in days">{{day.day}}</li>
  </ul>
</div>

  • {day.day}

没有生成li元素!我缺少什么?

您需要将其作为函数调用

ng-repeat="day in days()"

您需要将其作为函数调用

ng-repeat="day in days()"

不要将函数设置为作用域上的方法,只需在作用域上填充
days
属性即可:

功能时数Ctrl($scope){
var d=新日期();
$scope.days=[];
对于(var i=0;i<31;i++){
$scope.days.unshift({day:d.getDate()});
d、 setDate(d.getDate()-1);
}
};

为了获得更好的性能,您可以尝试反向循环,并使用
push
而不是
unshift

功能时数Ctrl($scope){
var d=新日期();
var计数器=31;
var date=d.getDate();
$scope.days=[];
d、 设置日期(日期-计数器+1);
而(计数器--){
date=d.getDate();
$scope.days.push({day:date});
d、 设置日期(日期+1);
}
};

不要将函数设置为作用域上的方法,只需在作用域上填充
days
属性即可:

功能时数Ctrl($scope){
var d=新日期();
$scope.days=[];
对于(var i=0;i<31;i++){
$scope.days.unshift({day:d.getDate()});
d、 setDate(d.getDate()-1);
}
};

为了获得更好的性能,您可以尝试反向循环,并使用
push
而不是
unshift

功能时数Ctrl($scope){
var d=新日期();
var计数器=31;
var date=d.getDate();
$scope.days=[];
d、 设置日期(日期-计数器+1);
而(计数器--){
date=d.getDate();
$scope.days.push({day:date});
d、 设置日期(日期+1);
}
};

顺便说一句,您使用
取消移位
而不是反向循环的原因是什么?控制台中是否出现堆栈溢出或范围错误?如果是这样的话,那是因为您不能在每次新创建的对象上重复ng——它们每个$digest都会得到一个新的作用域。您可以通过向它们添加$$hashKey来修复。顺便说一句,您使用
unshift
而不是反向循环的原因是什么?控制台中是否出现堆栈溢出或范围错误?如果是这样的话,那是因为您不能在每次新创建的对象上重复ng——它们每个$digest都会得到一个新的作用域。您可以通过向其添加$$hashKey来修复此问题。+1是。是的,会的。但他想知道为什么它不起作用,而不是“什么是最好的方法?”。这就是为什么。是的,会的。但他想知道为什么它不起作用,而不是“什么是最好的方法?”。这就是为什么。