【发布时间】:2014-10-14 09:02:08
【问题描述】:
我正在使用两个日期选择器
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt"
is-open="datepicker.dt" min-date="minDate" max-date="maxDate1" show-weeks="false" ng-required="true"
datepicker-options="dateOptions" show-button-bar="false"/>
和
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt2"
is-open="datepicker.dt2" min-date="minDate" max-date="maxDate2" show-weeks="false" ng-required="true"
show-button-bar="false" />
我将 minDate 设置为今天,将 dt 和 dt2 分别设置为从今天开始的 2 周和 3 周。现在我希望第二个日期选择器依赖于第一个日期选择器,反之亦然。如果在第一个日期之前的某个时间选择了第二个日期选择器的日期,则第一个日期选择器的日期应立即将其日期更改为为第二个日期选择器选择的同一天。此外,如果在第二个日期之后选择了第一个日期选择器的日期,则第二个日期选择器应自动更改为与第一个日期选择器所选日期相同的日期。我考虑过使用$watch 函数。但这似乎不起作用。
$scope.dt=Datepicker.daysToAdd();
在我的服务中:
DateSettings.daysToAdd=function(){
newDate = newDate.setDate(newDate.getDate()+numberOfDaysToAdd);
return newDate;
};
类似于第二个日期选择器。
$scope.$watch('dt',function(){
if($scope.dt.getTime()<=$scope.dt2.getTime()){
Datepicker.daysToAdd();
}else {
$scope.dt2=$scope.dt;
}
});
$watch 似乎无法正常工作,我该如何从这里开始?!
【问题讨论】:
-
我假设默认流程是这样的,当在第一个日期选择器中选择日期时,第二个日期选择器不应该改变。但是当这个流程反转时,您希望日期选择器反映您的输入。如果您希望两个日期选择器中的日期相同,为什么不使用单个范围变量作为 ng-model?
标签: javascript angularjs datepicker watch