在第二个datepicker之后设置第一个datepicker中的日期时,在Datepicker(Angular)中更新日期

时间:2014-10-14 09:02:08

标签: javascript angularjs datepicker watch

我正在使用两个日期选择器

<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周。现在我希望第二个datepicker依赖于第一个datepicker,反之亦然。如果在第一个日期之前的某个时间选择第二个日期选择器的日期,则第一个日期选择器的日期应立即将其日期更改为为第二个日期选择器选择的同一天。此外,如果在第二个日期之后选择第一个日期选择器的日期,则第二个日期选择器应自动更改为与第一个日期选择器的选定日期相同的日期。我想过使用$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似乎没有完成它的工作?!

1 个答案:

答案 0 :(得分:1)

$scope.$watch('dt',function(oldVal,newVal,attr){          
      if($scope.dt > $scope.dt2){
          $scope.dt2 = newVal;
      }
});

$scope.$watch('dt2',function(oldVal,newVal,attr){
      if($scope.dt > $scope.dt2){
          $scope.dt = newVal;
      }    
});