如何从控制器内部手动ng-hide隐藏?

里昂·加班

http://plnkr.co/edit/ps8TCpQ8znYQnOExO7Er

我有一个简单的应用程序,其中有头像图像和菜单。当您单击头像图像时,我使用ng-clickng-classng-show为显示和隐藏菜单设置动画。

HTML:
<div class="avatar"
     ng-click="id_avatar_menu.getMenuClick('clicked menu')"
     ng-class="{ active: avatarMenuBool }">
     <img width="100" height="100" src="http://www.memes.at/faces/are_you_fucking_kidding_me_clean.jpg" title="avatar" alt="user avatar" />
</div>

<div ng-show="avatarMenuBool" id="avatar_menu">
  <ul>
      <li><a href="#">Profile</a></li>
      <li><a href="#">Account</a></li>
      <li><a href="#">Logout</a></li>
  </ul>
</div>

// ANGULAR
// avatar_menu show/hide boolean
$scope.avatarMenuBool = false;

$scope.id_avatar_menu = {};
$scope.id_avatar_menu.getMenuClick = function(val) {
    $scope.avatarMenuBool = !$scope.avatarMenuBool
    console.log(" ");
    console.log(val);
    console.log("$scope.avatarMenuBool = "+$scope.avatarMenuBool);
};

现在可以正常工作,单击头像即可打开并关闭菜单。但是,我也希望用户能够单击body上的任何其他位置,#wrapper如果菜单已打开,则可以关闭菜单,但是如果用户单击菜单内的任何位置,则不能关闭菜单。

我向控制器添加了一些逻辑,以检测菜单是否打开以及用户是否在菜单内部或外部单击。不知道如何在Angular中执行此操作,因此请在此处使用原始Javascript:

document.getElementById('wrapper').onclick = function(e) {

  console.log(" ");

    if(e.target != document.getElementById('avatar_menu')) {

        console.log('clicked outside');
        if ($scope.avatarMenuBool === true) {
            console.log('code to close open avatar menu here...');
            // $scope.id_avatar_menu.setAttribute("class", "ng-hide-add");
        }

    } else {
        console.log("clicked inside menu... don't close menu");
        // Don't do anything...
    }
}

^目前确实可以检测到我是在菜单的外部还是内部单击,但是我不知道如何在打开菜单并单击外部的情况下强制菜单退回。尝试了被注释掉但出现错误的那一行。

在此处输入图片说明

您的Angularians将如何做?

JLRishe

ng-click在页面上放置body

<body ng-app="bitAge" ng-controller="AcctCtrl" ng-click="pageClick()">

并放在ng-click菜单上,传入$event

<div ng-show="avatarMenuBool" id="avatar_menu" ng-click="menuClick($event)">


在控制器内部:

$scope.pageClick = function () {
    $scope.avatarMenuBool = false;
};

$scope.menuClick = function ($event) {
    $event.stopPropagation();  // stop the event from bubbling up any further
};

您还需要传递$eventgetMenuClick()函数中并停止在那里的传播。如果不确定如何执行,请参阅更新的plnkr。

http://plnkr.co/edit/borj3btjkMIW9oBBzfL9?p=preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Ng表,隐藏列功能,无法手动隐藏控制器中的列

来自分类Dev

如何在控制器内部手动注入路由解析数据?

来自分类Dev

用ng-hide隐藏属性

来自分类Dev

用ng-hide隐藏属性

来自分类Dev

如何从角度控制器隐藏div

来自分类Dev

如何隐藏<embed>的控制器?

来自分类Dev

实时js ng-hide隐藏不起作用

来自分类Dev

根据值使用ng-hide隐藏div

来自分类Dev

ng-hide是否隐藏了所包含的DOM元素?

来自分类Dev

实时js ng-hide隐藏不起作用

来自分类Dev

Simple Injector手动注册控制器

来自分类Dev

laravel 4手动控制器

来自分类Dev

如何使用jquery隐藏li?hide()无法正常工作

来自分类Dev

如何使用 jquery 'show()' 或 'hide()' 显示/隐藏内容

来自分类Dev

如何在angularjs中从控制器手动注入部分

来自分类Dev

如何在新建情节提要后手动添加根视图控制器箭头?

来自分类Dev

如何在没有控制器的情况下手动提供.cshtml文件?

来自分类Dev

Ninject with MVC-如何从控制器方法中的ninject手动获取对象?

来自分类Dev

如何手动运行 Rails 控制器操作(“离线”)?

来自分类Dev

如何使用ng-show / ng-hide隐藏Angular Bootstrap UI中的选项卡

来自分类Dev

如何使用ng-show / ng-hide隐藏Angular Bootstrap UI中的选项卡

来自分类Dev

如何在Laravel中手动将信息传递给寄存器控制器

来自分类Dev

如何正确重写.ng-hide类以更改隐藏/显示性质?

来自分类Dev

如何在emberjs 2.1中隐藏ng-hide这样的组件?

来自分类Dev

手动隐藏后的自举模式错误

来自分类Dev

删除输入内容时隐藏内容(手动)

来自分类Dev

如何在根视图中隐藏导航控制器?

来自分类Dev

如何从Codeigniter中的URL删除/隐藏控制器名称

来自分类Dev

如何在Java中从控制器隐藏登录框架

Related 相关文章

  1. 1

    Ng表,隐藏列功能,无法手动隐藏控制器中的列

  2. 2

    如何在控制器内部手动注入路由解析数据?

  3. 3

    用ng-hide隐藏属性

  4. 4

    用ng-hide隐藏属性

  5. 5

    如何从角度控制器隐藏div

  6. 6

    如何隐藏<embed>的控制器?

  7. 7

    实时js ng-hide隐藏不起作用

  8. 8

    根据值使用ng-hide隐藏div

  9. 9

    ng-hide是否隐藏了所包含的DOM元素?

  10. 10

    实时js ng-hide隐藏不起作用

  11. 11

    Simple Injector手动注册控制器

  12. 12

    laravel 4手动控制器

  13. 13

    如何使用jquery隐藏li?hide()无法正常工作

  14. 14

    如何使用 jquery 'show()' 或 'hide()' 显示/隐藏内容

  15. 15

    如何在angularjs中从控制器手动注入部分

  16. 16

    如何在新建情节提要后手动添加根视图控制器箭头?

  17. 17

    如何在没有控制器的情况下手动提供.cshtml文件?

  18. 18

    Ninject with MVC-如何从控制器方法中的ninject手动获取对象?

  19. 19

    如何手动运行 Rails 控制器操作(“离线”)?

  20. 20

    如何使用ng-show / ng-hide隐藏Angular Bootstrap UI中的选项卡

  21. 21

    如何使用ng-show / ng-hide隐藏Angular Bootstrap UI中的选项卡

  22. 22

    如何在Laravel中手动将信息传递给寄存器控制器

  23. 23

    如何正确重写.ng-hide类以更改隐藏/显示性质?

  24. 24

    如何在emberjs 2.1中隐藏ng-hide这样的组件?

  25. 25

    手动隐藏后的自举模式错误

  26. 26

    删除输入内容时隐藏内容(手动)

  27. 27

    如何在根视图中隐藏导航控制器?

  28. 28

    如何从Codeigniter中的URL删除/隐藏控制器名称

  29. 29

    如何在Java中从控制器隐藏登录框架

热门标签

归档