Javascript 单击下一个日期选择器AngularJS时关闭日期选择器

Javascript 单击下一个日期选择器AngularJS时关闭日期选择器,javascript,angularjs,twitter-bootstrap,date,datepicker,Javascript,Angularjs,Twitter Bootstrap,Date,Datepicker,我的表格中有多个日期选择器。默认情况下,它们将关闭,一旦选择日期,它们将再次关闭。此外,即使我没有选择日期,只需在其外部单击,它也会自动关闭 但是,当我打开第一个日期并且没有单击外部或选择某个日期,然后只打开第二个日期选择器时,第一个日期选择器保持打开状态 我如何避免这种情况,并确保即使在单击第二个日期选择器时,第一个日期选择器也会自动关闭 <button type="button" id="dateButton" class="btn btn-default" ng

我的表格中有多个日期选择器。默认情况下,它们将关闭,一旦选择日期,它们将再次关闭。此外,即使我没有选择日期,只需在其外部单击,它也会自动关闭

但是,当我打开第一个日期并且没有单击外部或选择某个日期,然后只打开第二个日期选择器时,第一个日期选择器保持打开状态

我如何避免这种情况,并确保即使在单击第二个日期选择器时,第一个日期选择器也会自动关闭

           <button type="button" id="dateButton" class="btn btn-default" ng-click="open($event,'dt')" >
          <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt"
                 is-open="datepicker.dt" min-date="minDate" max-date="maxDate" show-weeks="false" ng-required="true"
                 datepicker-options="dateOptions" show-button-bar="false" readonly="readonly"/>
        </button>

        <button type="button" id="dateButton" class="btn btn-default" ng-click="open($event,'dt2')" >
          <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt2"
                 is-open="datepicker.dt2" min-date="minDate" max-date="maxDate" show-weeks="false" ng-required="true"
                  show-button-bar="false" readonly="readonly"/>
        </button>

下面是我所做的:您可以看到,如果您单击一个日期选择器,但只需单击另一个,第一个日期选择器将不会关闭

您在is-from属性中使用的名称是“datepicker.dt”。 然后将“dt”传递给开放函数。因此,如果您对多个日期选择器使用相同的html代码,那么您将同时打开所有日期选择器

您需要为不同的日期选择器定义不同的is open名称,并且为每个日期选择器定义不同的open函数更方便。然后,您需要的只是将关联的datePicker函数的is open属性设置为true

$scope.openDt1=函数($event){
$event.preventDefault();
$event.stopPropagation();
$scope.datepicker.dt1=true;
};
$scope.openDt2=函数($event){
$event.preventDefault();
$event.stopPropagation();
$scope.datepicker.dt1=true;
};


很抱歉……我没有正确解释我的行为。下面是我所做的:如果单击一个datepicker,然后只单击另一个,则第一个不会关闭。原因是datepicker.dt1和datepicker.dt2仍然为真。打开dt1时,需要将所有datePickers的is-open属性设置为false,并且只将dt1.is-open设置为true。很抱歉我的响应太晚。上周我病了。你能给我进一步的解释吗?我似乎不懂如何改变功能。是的,我懂了。你给了一些很好的提示,所以帮助很大。谢谢
$scope.datepicker={
  dt:false,
  dt2:false
};
$scope.open = function($event,which) {
  $event.preventDefault();
  $event.stopPropagation();

  $scope.datepicker[which] = true;
};
$scope.format = 'dd-MMM-yyyy';