Angular-UI运行dropdownToggle来自ng-click

时间:2013-05-21 09:12:46

标签: angularjs angular-ui

有没有办法从ng-click指令运行dropdownToggle? 我正在使用ngMobile来避免延迟点击触摸设备上的“操作”按钮。

  <div class="btn-group">
      <a class="btn dropdown-toggle">
        Actions
        <span class="caret"></span>
      </a>
      <ul class="dropdown-menu">
          <li><a>Action 1</a></li>
          <li><a>Action 2</a></li>
      </ul>
  </div>

菜单也有问题,如果我不保留Action1 / Action2,则不会关闭 压了很久。 (比平时更长的时间)。

2 个答案:

答案 0 :(得分:2)

看起来我找到了一个解决方案(不是我认为最好的解决方案),但它确实有效。 如果有人有更好的,请分享。

打开下拉列表会在下拉列表元素中添加一个“open”类,因此为了使用ng-click打开它,我需要添加此类。

我知道这是一个临时解决方案,但没有找到更好的解决方案。

以下是代码:

<div class="btn-group" ng-class="{open: opened}" ng-click="opened=!opened"  ng-init="opened=false">
      <a class="btn dropdown-toggle">
        Actions
        <span class="caret"></span>
      </a>
      <ul class="dropdown-menu">
          <li><a ng-click="$location.path('/some/addr')">Action 1</a></li>
      </ul>
  </div>

关于点击关闭菜单:这可能是由我的html错误引起的(没有正确关闭某些标签)。纠正后,问题消失了。从源代码我看到dropDown菜单在click&amp; amp;正在运行$location.path()

答案 1 :(得分:2)

$location.path(newPath)下拉表单没有关闭时,我遇到了类似的问题。如果您使用未压缩的ui-bootstrap文件,我的解决方案是

angular.module('ui.bootstrap.dropdownToggle', [])
    .directive('dropdownToggle', ['$document', '$location', function($document, $location)

更改

scope.$watch('$location.path', function() {
    closeMenu();
});

scope.$watch('$routeChangeStart', function() {
    closeMenu();
});