答案有点晚了,但是如果您只想使用角度 ui 日期时间选择器与日期进行比较,则可以使用我创建的以下指令将其与使用 moment.js 的日期值进行比较。该指令需要 moment.js 文件,但您甚至可以不使用它,但我个人认为 moment.js 非常适合 javascript 中的日期函数。有你比较日期的指令如下
mainApp.directive("dateGreaterAndEqual", function () {
return {
restrict: 'A', // only activate on element attribute
require: '?ngModel', // get a hold of NgModelController
link: function (scope, elem, attrs, ngModel) {
if (!ngModel) return; // do nothing if no ng-model
// watch own value and re-validate on change
scope.$watch(attrs.ngModel, function () {
validate();
});
// observe the other value and re-validate on change
attrs.$observe('dateGreaterAndEqual', function (val) {
validate();
});
var validate = function () {
// values
var dateTo = angular.isDefined(ngModel.$viewValue) === true && !_.isNull(ngModel.$viewValue) ? moment(ngModel.$viewValue).toDate() : null;
var dateFrom = attrs.dateGreaterAndEqual !== "" ? moment(attrs.dateGreaterAndEqual.replace('"', '').replace('\\', '').replace('"', '')).toDate() : null;
//passing date with braces around it causes and issue therfore we need to use replace
};
}
}
});
dateTo 和 dateFrom 是您需要的值。您需要以下 html 标记才能使用它
<p class="input-group">
<input type="text" class="form-control" data-datepicker-popup="{{Model.DateFormat}}"
ng-model="Model.ProcedureDateTo"
data-is-open="openedTo" data-min-date="Model.MinDate"
data-max-date="Model.MaxDate"
data-datepicker-options="dateOptions" data-date-disabled="disabled(date, mode)"
ng-required="false" data-close-text="{{Close}}" data-date-greater-and-equal="{{Model.ProcedureDateFrom}}" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="openTo($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
这一行的关键是
data-date-greater-and-equal="{{Model.ProcedureDateFrom}}" 传递给指令进行比较。