AngularJS技术求助:获取今日日期并通过ng-repeat展示后续6天
使用AngularJS的ng-repeat展示今日及后续6天日期的解决方案
嘿,我来帮你搞定这个问题!你当前的代码只拿到了今日日期,但还没生成包含后续6天的日期数组,这就是ng-repeat没法正常工作的核心原因。我给你修正并完善了代码,直接就能运行:
完整可运行代码
<!DOCTYPE html> <html> <head> <title>今日及未来6天日期展示</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <script> // 定义专属Angular模块,避免全局代码冲突 var dateApp = angular.module('dateApp', []); dateApp.controller('dateCtrl', function($scope) { $scope.dates = []; var today = new Date(); // 循环生成今日+后续6天的日期数组 for (var i = 0; i < 7; i++) { // 必须创建新的Date实例,否则所有元素会指向同一个日期对象 var targetDate = new Date(today); targetDate.setDate(today.getDate() + i); $scope.dates.push(targetDate); } }); </script> </head> <body ng-app="dateApp"> <div ng-controller="dateCtrl"> <h3>今日及未来6天</h3> <ul> <!-- 用ng-repeat遍历日期数组,借助自带date过滤器格式化显示 --> <li ng-repeat="date in dates"> {{ date | date:'yyyy-MM-dd (EEEE)' }} </li> </ul> </div> </body> </html>
关键细节说明
- 生成独立日期对象:Date是引用类型,如果直接修改同一个
today对象,数组里的所有元素最终都会变成最后一天的日期。所以每次循环都要通过new Date(today)复制一个新的日期实例,保证每个元素都是独立的。 - Angular自带date过滤器:
{{ date | date:'格式' }}可以快速格式化日期,比如yyyy-MM-dd是年月日格式,EEEE是完整星期名称,你可以根据需求调整格式(比如改成MM/dd只显示月日)。 - 规范模块定义:之前的代码用了无模块的
ng-app,虽然能运行,但定义专属模块(比如这里的dateApp)是更规范的做法,避免和其他全局代码产生冲突。
内容的提问来源于stack exchange,提问作者user4828683
相关产品推荐
相关产品推荐

