javascript - 在AngularJS中为jQuery datepicker动态设置最大限制
问题描述
在我的应用程序中,最大日期是根据一些逻辑计算的。日期是 JSON 日期。它将用于设置最大日期。
为了显示问题,我创建了一个 plunker 链接(http://plnkr.co/edit/KR2brhOXPMgZhbhafhex?p=preview)。
在我的示例max-date
中,属性获取 JSON 日期
<input type="text" date-picker="" date-range="true" ng-model="Date"
class="form-control input-sm" placeholder="MM/DD/YYYY"
ng-required="true" name="Date" ng-pattern='datePattern'
max-date="dateLimit"/>
在我的控制器中,我尝试将 JSON 日期转换为 mm/dd/yy 日期字符串。为此,我创建了一个getcalculateddDate
函数
在 chrome 开发工具控制台中评估我的日期
app.controller('MainCtrl', function($scope) {
$scope.datePattern = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/i
var jsonDateExample = "/Date(1522728000000)/";
$scope.dateLimit = getCalculatedDate(jsonDateExample );
function getCalculatedDate(date) {
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = (date.getDate() - 1).toString();
day = day.length > 1 ? day : '0' + day;
return month + '/' + day + '/' + year;
}
});
我创建了一个指令来帮助我实现这一目标
app.directive('datePicker', function () {
return {
require: 'ngModel',
scope: {
dateRange: '=',
maxDate: '='
},
link: function (scope, el, attr, ngModel) {
if (scope.dateRange !== undefined && scope.dateRange) {
$(el).datepicker({
maxDate: scope.maxDate,
minDate: '-1M',
onSelect: function (dateText) {
scope.$apply(function () {
ngModel.$setViewValue(dateText);
});
}
});
}
else {
$(el).datepicker({
onSelect: function (dateText) {
scope.$apply(function () {
ngModel.$setViewValue(dateText);
});
}
});
}
}
};
});
解决方案
这不是一个有效的日期:("/Date(1522728000000)/"
而是一个字符串)并且绝对不是一个有效的 JSON(在这里查看)。
您可以做的是将对象传递给函数getCalculatedDate
(Date
请参阅此plunker)。例如像这样:
$scope.dateLimit = getCalculatedDate(new Date());
或者...从“JSON”中包含的值1522728000000
(顺便说一句,它不是有效日期,请参阅Date.parse
符合IETF 的 RFC 2822 时间戳和ISO8601 版本getCalculatedDate
)在函数内部创建日期,如下所示(请参阅plunker):
$scope.dateLimit = getCalculatedDate("2018-10-20T03:24:00");
// ...
function getCalculatedDate(dateNum) {
var date = new Date(dateNum);
// ... remainder omitted
}
其他阅读材料(感谢 OP,DotNetBeginner!)
推荐阅读
- python - 如何拆分字符串并将其分配给python中的新列
- c# - 如何返回任务?
- python - 使用烧瓶/python重定向到外部链接的问题
- sql - 当我从我的 sql 到我的 spring-boot 应用程序时,为什么我的 LocalDateTime 变量改变了 5 小时?
- ios - 使 AVMutableComposition 与图像(方面填充)和视频在方面适合
- react-native - 无法在 Animated.View 上使用 onPress() 事件设置为 Position: Absolute - React Native
- oracle - 如果金额字段在记录之间从 + 10 或 -10 变化,则查找重复记录并显示为一条记录
- java - JDBC多连接与单连接的性能相同
- javascript - 递归函数 Js
- laravel - 使用现有数据从数据数组插入和创建数据