AngularJs-通过编程触发;点击";事件(无jQuery)
请问是否可以使用AngularJS在页面加载时以编程方式触发下拉菜单的单击事件 我希望在加载页面后,我的导航菜单会自动显示 这就是我到目前为止所做的: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"> <!-
<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;”“
但是,为了显示列表项,您使用了isMainMenung 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来确定当前显示的是哪一个菜单。我希望这是有意义的…:)很高兴我能提供帮助。