首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何关闭所有弹出式的身体点击角?

如何关闭所有弹出式的身体点击角?
EN

Stack Overflow用户
提问于 2015-05-07 15:09:24
回答 1查看 96关注 0票数 1

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

我在努力寻找最好的方法来完成这件事。基本上,在我们的应用程序中有几个弹出式,用于模糊搜索、附加选项、帮助提示等。

当它们中的任何一个打开时,如果用户单击它之外的任何地方,比如身体,它们都需要关闭。

代码语言:javascript
复制
vs.togglePopover = function() {
    vs.searchPopoverDisplay = vs.searchPopoverDisplay === false ? true: false;
};

我目前在身体上的ng点击:

代码语言:javascript
复制
vs.closePopovers = function() {
    PopFactory.hidePopovers();
};

这将与工厂服务联系,该服务获取具有弹出窗口的所有控制器/指令的作用域,如果这些控制器/指令是打开的,则关闭它们。

当然,这会使弹出无法使用,因为一旦单击按钮打开弹出窗口,主app.js控制器就会检测到主体单击并关闭它。

代码语言:javascript
复制
var hidePopovers = function() {
    searchPopover     = ScopeFactory.getScope('search');
    tagsSearchPopover = ScopeFactory.getScope('tagsPopover');
    tagsSortPopover   = ScopeFactory.getScope('tagsSearch');
    tagsPanel         = ScopeFactory.getScope('tagsPanel');

    // is this popover open?
    // if so close it, see the problem?
    if (searchPopover.searchPopoverDisplay) {
        searchPopover.searchPopoverDisplay = false;
    }

    if (tagsSearchPopover.tagSearchPopover) {
        tagsSearchPopover.tagSearchPopover = false;
    }

    if (tagsSortPopover.tagsPopoverDisplay) {
        tagsSortPopover.tagsPopoverDisplay = false;
    }

    if (tagsPanel.showingTagSearchInput) {
        tagsPanel.showingTagSearchInput = false;
    }
};

return {
    hidePopovers : hidePopovers
};

这个功能在带有弹出框的应用程序中通常是如何定位的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 15:16:59

为什么不使用活动呢?

点击:

代码语言:javascript
复制
vs.closePopovers = function() {
    $rootScope.$broadcast('closeAllPopovers');
};

然后,在每个波波弗的范围内:

代码语言:javascript
复制
scope.$on('closeAllPopovers', function(){
    close(); // Or however you close a popover
});

$on的角度文档

使用注释中链接的Plunk:

单击该按钮时,您可以从按钮单击和主体单击中看到日志消息(在日志记录BTW上做得很好)。这意味着您对按钮的单次单击将由按钮(打开弹出窗口)和主体(关闭弹出按钮)进行处理。

看看这个扑通

要停止这种行为,需要告诉ng单击事件停止在元素层次结构上传播。谢天谢地,一旦你知道怎么做,这就很容易了。与此相关的问题 (我更喜欢第二个答案,我不喜欢.html中过多的代码)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30105051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档