以下应该可以解决问题。您要做的是使用 ng-model 属性将日期输入绑定到值。您的指令(在我的示例中为验证器)将具有隔离范围。date:'=' 设置本地值(日期)和父范围值(日期输入)之间的双向绑定。在链接函数中,您可以将 dateValidation 分配给指令的范围,这将在日期之间进行比较。
最后,一个 ng-show='dateValidation(date, compareDate)' 根据 dateValidation 函数是否通过来显示和隐藏警告。
另外,请注意,comparisonDate 在 HTML 中的拼写不同。
angular.module('YourApp')
.directive('validator', function() {
return {
restrict: 'E',
template: "<div ng-show='dateValidation(date, comparisonDate)'>Dates are out of order</div>",
scope: {
date:'=',
comparisonDate:'='
},
link: function(scope) {
scope.dateValidation = function(date, comparisonDate) {
// Your date comparison logic goes here
return parseInt(date) > parseInt(comparisonDate);
};
}
}
});
在您的 HTML 中,您希望将日期附加到 ng-model 属性,如下所示:
<p>Date 1: <input type="text" ng-model="dateInput"></p>
<p>Date 2: <input type="text" ng-model="comparisonDateInput"></p>
<validator date="dateInput" comparison-date="comparisonDateInput">
好的,所以我将这些日期视为整数,这并不是您想要的。但是,听起来这并不是你的症结所在。希望这可以帮助!