AngularJS中datetime-local输入框默认日期设置方法咨询
解决AngularJS中datetime-local输入框的默认日期设置问题
这个问题我之前也碰到过,核心问题出在datetime-local输入框对格式的严格要求上——它只识别YYYY-MM-DDTHH:mm这种ISO 8601格式的字符串(注意日期和时间之间的T分隔符),你之前用的dd-MM-yyyy HH:mm格式完全不符合规范,所以绑定不上。接下来给你两种可行的解决方案:
1. 提前在控制器中初始化日期数组
首先要确保$scope.form.date是一个已初始化的数组,然后遍历selectedPhotos给每个索引位置设置符合格式的默认日期:
// 先初始化form对象和date数组,避免undefined问题 $scope.form = { date: [] }; // 遍历selectedPhotos,给每个项设置默认日期 angular.forEach($scope.selectedPhotos, function(photo, index) { // 关键:使用正确的格式字符串 'yyyy-MM-ddTHH:mm' $scope.form.date[index] = $filter('date')(new Date(), 'yyyy-MM-ddTHH:mm'); });
别忘了在控制器里注入$filter服务,不然会报错:
app.controller('YourController', ['$scope', '$filter', function($scope, $filter) { // 上述初始化代码放在这里 }]);
2. 动态添加项时自动设置默认值
如果selectedPhotos是动态添加的(比如用户上传新照片时新增项),可以用ng-init在每个输入框渲染时自动初始化默认值,这样新增的输入框会自动带上当前时间:
<div class="col-lg-12 photo-container" ng-repeat="photo in selectedPhotos track by $index" ng-if="add"> <input id="myDate{{$index}}" type="datetime-local" name="date[]" ng-model="form.date[$index]" <!-- 只有当对应位置没有值时才初始化,避免覆盖已输入的内容 --> ng-init="form.date[$index] = form.date[$index] || $filter('date')(new Date(), 'yyyy-MM-ddTHH:mm')"> <img ng-src="{{photo}}" class="thumb"> </div>
额外提醒
- 如果你后续需要把这个日期字符串转换成Date对象,可以用
new Date(form.date[$index])来处理; - 测试时可以用控制台打印
$scope.form.date,确认每个值都是符合格式的字符串,这样就能正常显示在输入框里了。
内容的提问来源于stack exchange,提问作者Mateusz Kibiłko
相关产品推荐
相关产品推荐

