javascript - 为 AngularJS 导航编写自定义函数

标签 javascript html angularjs angularjs-ng-click

所以我有一个导航,我想要一个带有子菜单功能的下拉菜单。我尝试使用 ng-show 来显示和隐藏菜单,但随后我必须返回并再次单击项目来隐藏它。我希望能够单击以显示它,然后单击其他任何位置以将其隐藏。

尝试使用 ng-click 但不确定应该将我想要检索的自定义函数放在哪里,无论使用什么 Controller 。

我可以在指令中添加这样的内容吗?该函数不会像工厂一般那样调用 html 或获取任何内容,它只是在不同的点击事件上显示和隐藏内容。

最佳答案

可能有更复杂的方法可以做到这一点,也可能更优雅,但我过​​去发现这样做可以解决问题。假设您在 Angular 之前加载 jQuery,因此 $ 是完整的 jQuery。如果您发现自己使用许多不同的 DOM 元素执行此操作,那么将其分解为一个工厂可能会更有效,该工厂允许许多对象以这种方式注册自己,只需与 body 进行一次绑定(bind).

app.directive('clickOffHide',function() {
    return {
        ...
        link: function(.., elem, ..) {
            $('body').click(function(evt) {
                var $elem = $(elem);
                var $target = $(evt.target);
                if($elem.is($target) || $elem.has($target).length > 0) return;
                $elem.hide();
            });
        }
    }
});

关于javascript - 为 AngularJS 导航编写自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350824/

相关文章:

javascript - NodeJS + Express 使用 fetch() : How to bypass "Your connection is not private" in Javascript?

javascript - console.log 与返回 : different results (JS)

javascript - 有没有办法用 ruby​​ 选择具有特定类的 html 元素?

html - 右边的 4 张图片作为侧边栏

javascript - 如何使用 $http 服务请求 API 数据

javascript - ui-router返回主页按钮

javascript - 在基于 React 的站点中加载页面时启动 Bootstrap 模式。

javascript - 在元素之间插入新的 DOM

jquery - 使用 jQuery 按数据属性操作选项

angularjs - 添加 ng-pattern 属性的指令