Javascript 如果手动关闭UI引导下拉开关,则需要单击两次

Javascript 如果手动关闭UI引导下拉开关,则需要单击两次,javascript,angularjs,twitter-bootstrap,angular-ui-bootstrap,Javascript,Angularjs,Twitter Bootstrap,Angular Ui Bootstrap,我正在使用UI引导下拉组件在单击时显示日历。我还添加了一个$watch,以在选择日期后关闭下拉列表 <div uib-dropdown id="calendar1"> <h4> <a uib-dropdown-toggle id="calendar1-toggle" href="">Select Date <b class="caret"></b> </a> </h4> <ul

我正在使用UI引导下拉组件在单击时显示日历。我还添加了一个
$watch
,以在选择日期后关闭下拉列表

<div uib-dropdown id="calendar1">
  <h4>
    <a uib-dropdown-toggle id="calendar1-toggle" href="">Select Date <b class="caret"></b>
    </a>
  </h4>
  <ul uib-dropdown-menu>
    <datetimepicker data-ng-model="date" data-datetimepicker-config="{ startView:'month', minView:'month' }"></datetimepicker>
  </ul>
</div>

$scope.$watch('date', function(newValue){                    
   angular.element(document.getElementById('calendar1')).removeClass('open');
})

但我还是按了两次开关。我做错了什么?

手动更改类不是打开/关闭
uib下拉列表的方式
为什么这样做?文档清楚地显示了用于隐藏/显示下拉列表的
打开属性

标记:

<div uib-dropdown id="calendar1" is-open="dropdownOpen">
  <h4>
    <a uib-dropdown-toggle href="">Select Date <b class="caret"></b>
    </a>
  </h4>
  <ul uib-dropdown-menu>
    <datetimepicker data-ng-model="date" data-datetimepicker-config="{ startView:'month', minView:'month' }">

    </datetimepicker>
  </ul>
</div>

Plunker:

手动更改类不是打开/关闭
uib下拉列表的方式
为什么这样做?文档清楚地显示了用于隐藏/显示下拉列表的
打开属性

标记:

<div uib-dropdown id="calendar1" is-open="dropdownOpen">
  <h4>
    <a uib-dropdown-toggle href="">Select Date <b class="caret"></b>
    </a>
  </h4>
  <ul uib-dropdown-menu>
    <datetimepicker data-ng-model="date" data-datetimepicker-config="{ startView:'month', minView:'month' }">

    </datetimepicker>
  </ul>
</div>

Plunker:

为什么您试图通过手动添加/删除类来打开/关闭
uib下拉列表<代码>uib下拉列表
有一个
处于打开状态
属性来处理该问题。@JoelCDoyle,因为我想在a中选择日期后手动关闭下拉列表calendar@JoelCDoyle如果我理解正确,
是打开的
attr仅用于初始化。他们放在那里是为了方便你。与我一起左转到easy street为什么您试图通过手动添加/删除类来打开/关闭
uib下拉列表
<代码>uib下拉列表有一个
处于打开状态
属性来处理该问题。@JoelCDoyle,因为我想在a中选择日期后手动关闭下拉列表calendar@JoelCDoyle如果我理解正确,
是打开的
attr仅用于初始化。他们放在那里是为了方便你。和我一起向左拐到easy street
  $scope.$watch('date',function(newValue){
    //angular.element(document.getElementById('calendar1')).removeClass('open')
    $scope.dropdownOpen = false;
  });