AngularJs-通过编程触发;点击";事件(无jQuery)

AngularJs-通过编程触发;点击";事件(无jQuery),angularjs,Angularjs,请问是否可以使用AngularJS在页面加载时以编程方式触发下拉菜单的单击事件 我希望在加载页面后,我的导航菜单会自动显示 这就是我到目前为止所做的: <li class="menu-item" style="margin-top:15px"> <!-- Single button --> <div class="btn-group open" uib-dropdown is-open="status.isopen"> <!-

请问是否可以使用AngularJS在页面加载时以编程方式触发下拉菜单的单击事件

我希望在加载页面后,我的导航菜单会自动显示

这就是我到目前为止所做的:

<li class="menu-item" style="margin-top:15px">

<!-- Single button -->
    <div class="btn-group open" uib-dropdown is-open="status.isopen">

        <!-- Hamburger menu -->

        <img ng-init="displayMainMenu()" id="nav-burger" uib-dropdown-toggle ng-disabled="disabled" ng-click="sMainMenu=true; isSubMenu=resetMenu(); getLinks(); bStopPropagation=true;" src="img/burger.png">

        <!-- Main menu -->
        <ul uib-dropdown-menu role="menu" aria-labelledby="single-button" ng-click="bStopPropagation && $event.stopPropagation()">

        <!-- Main Menu -->
        <li role="menuitem" class="main-menu-item" ng-repeat="link in links" ng-click="whatMenu(link.name); isSubMenu=false;" ng-show="isMainMenu">
        <img id="{{link.icon}}">{{link.name}}<img class="navi-expand-icon">
        </li>
        <!-- End Main Menu -->

        </ul>

     </div>
</li>
    • {{link.name}
  • 这是我的JS代码:

    $scope.displayMainMenu = function () {
        var domElement = document.getElementById('nav-burger');
    
        alert('before timeout');   // <-- This gets triggered
    
        $timeout(function () {
            angular.element(domElement).triggerHandler('click');
        }, 0);
    
        alert('after timeout');    // <-- This doesn't get triggered...
    }
    
    $scope.displayMain菜单=函数(){
    var domeElement=document.getElementById('nav-burger');
    
    警报('before timeout');//ng单击图像会触发以下事件:
    ng click=“sMainMenu=true;”“
    但是,为了显示列表项,您使用了isMainMenu
    ng show=“isMainMenu”


    所以我猜你打错了。

    谢谢你提供的线索Matheno!我对$timeout做了更多的研究,最后通过在控制器中声明$timeout实现了:

    app.controller('ctrlDropdown', function ($scope, $timeout) {
    
        $scope.isMainMenu = true;
        $scope.isSubMenu = false;
        $scope.links = "";
        $scope.subLinks = "";
        $scope.selectedLink = "";
        $scope.bStopPropagation = true;
    
       ...
    }
    

    是否声明了$timeout,并且您是否将其包含在项目中?您是否收到任何控制台错误?1.不,我没有…我只是从SO中的另一个问题中得到这个问题。理想情况下,我应该在哪里声明$timeout?2.“TypeError:对象不支持属性或方法'done'”.我不知道这意味着什么…不,这不是打字错误。这背后的原因是菜单的显示方式。一旦用户单击主菜单中的一个项目,子菜单将显示,并与主菜单区域重叠,而不是其默认行为(显示在右侧)。我们需要isMainMenu来确定当前显示的是哪一个菜单。我希望这是有意义的…:)很高兴我能提供帮助。