Buble up Events向上传播的冒泡事件
In Adobe Flex it is easy to make a event bubble, which means that if a DisplayObject dispatches an event, the event will be re-dispatched by each parent of the DisplayObject until it reaches the root of the application.
This behavior is really useful. One common function that I use this behavior for is handling the navigation within my applications. I attach an event listener to the singleton application instance (Application.application) for navigation events, and handle them within the main application class. This means that any control, anywhere in the application, can easily navigate to any other part of the application through one line of code ( dispatchEvent( new NavivationEvent(….) ).
大家都知道Event是沿着对象的继承树向上传播的,这部分就是讲这是个相当好的特性,当然是很好的特性,我们所有的人大概都爱死这个特性了,看看我们的作者碰到了什么问题.
The Problem问题
Bubbling events dispatched from popups within the Flex application are not heard by a listener attached to the application instance. This is
从弹出框派发的事件无法被添加在application对象的监听器捕获。
because DisplayObjects created through the PopupManager.createPopup() function are not children of the application container. How then, can
因为,从PopupManager.createPopup() 创建的显示对象DisplayObjects 不是application的子类,按照冒泡事件特性,当然添加在application对象的监听器就没法捕获此事件了
we cleanly handle events coming out of popups so that we still only have one pattern for handling navigation within the application?
The Solution
To solve this problem, we need to know a little bit about the structure of a Flex application as shown in the diagram below:
要解决这个问题,我们需要了解一些FLEX的框架,如下图所示:
In this diagram we can clearly see that popups within a Flex application are not children of the application container, but are instead children of the SystemManger. 从这张图,我们可以清楚的看出,FLEX应用程序的弹出框不是application容器的子类,而是systemmananger的子类
I wont go into the functions of the system manager here, but every UIComponent contains a reference to the system manager of the current application so its easy to get a reference to it. 当然我在这里不会详述任何系统的函数,但是必须指出,每一个UICOMPONENT都包含了一个到当前SYSMANAGER的引用,因此很容易就能得到当前SYSMANAGER的引用。
This means that instead of attaching my event listener to:这意味着我们可以这样的挂接一个监听器
Application.application (不是这儿)
I can instead attach my listener to:挂接到这儿
Application.application.systemManager 挂接到这儿
Then my listener will hear all bubbling events within the system, regardless of whether they originate within a Popup or a standard UIComponent.
Problem solved. 这样在POPUP里冒泡出的事件就能被监听到了。
相关推荐
综上所述,实现"Popup例子 实现弹出窗口的关闭"需要对WPF和Windows Phone的UI框架有深入理解,包括Popup的使用、事件监听、逻辑控制以及动画效果的添加。通过这些技术,我们可以创建出更符合用户习惯的交互界面,...
2. **使用附加事件**:Popup.IsOpenChanged事件可以监听Popup的打开和关闭状态,当Popup关闭时,恢复其他元素的正常事件处理。 3. **阻止Popup捕获事件**:在Popup上设置StaysOpen属性为false,使得Popup仅在鼠标移...
【vue+leaflet+elementUI】vue项目中在Leaflet弹框Popup中使用elementui组件(三)cv可用 【vue+leaflet+elementUI】vue项目中在Leaflet弹框Popup中使用elementui组件(三)cv可用 【vue+leaflet+elementUI】vue项目中在...
在JavaScript的世界里,`popup.js`通常用于创建自定义的弹出框或对话框,它是一种用户界面元素,用于提供额外的信息或者与用户进行交互。`popup.js`文件是实现这种功能的脚本,它可能包含了创建、显示、隐藏以及处理...
5. **显示popup**:在事件处理函数中,使用`viewer.selectedEntity`获取当前选中的实体,然后将准备好的内容添加到InfoBox,或者使用`Cesium.Entity.show`方法控制自定义实体的可见性。 下面是一个简单的示例代码,...
例如,可以添加事件监听器(如`click`事件)到触发弹出框的元素,当用户点击时显示弹出框,并在关闭按钮或特定条件下隐藏它。 三、设计原则 1. **明确性**:弹出框应清晰传达信息,避免混淆。确保用户能快速理解弹...
6. **事件委托**:为了优化性能和减少事件监听器的数量,`popup.js`可能使用事件委托来处理弹窗内的多个交互元素。 7. **响应式设计**:为了确保弹窗在不同设备和屏幕尺寸上都能正常工作,`popup.js`可能包含针对...
Popup在Web开发中通常指的是弹出窗口或者对话框,它是一种常见的用户交互方式,用于显示额外的信息、警告、确认操作或者其他交互元素。标题"关于popup的使用"表明我们将讨论如何在网页中应用popup,而描述中提到...
为了实现popup的触发功能,我们需要绑定事件监听器,如`click`事件。使用`.on('click', function() {...})`可以给元素绑定点击事件,并定义相应的处理函数。 5. **Popup显示与隐藏**: 控件的核心在于如何控制...
在本文中,我们将深入探讨jQuery Popup的源码示例,这是一种使用jQuery库创建弹出窗口或模态对话框的方法。jQuery作为一个轻量级、高性能的JavaScript库,为开发者提供了简化DOM操作、事件处理、动画效果等功能,...
在Android开发中,"点击按钮后,出现一个popup" 是一种常见的交互设计,它涉及到按钮事件监听和PopupWindow的使用。PopupWindow是Android系统提供的一个轻量级窗口,它可以显示在屏幕任意位置,并且可以自定义其内容...
在Windows Presentation Foundation (WPF) 中,Popup是一个非常实用的控件,用于创建浮动的、非模态的用户界面元素,它可以显示在主窗口或其他UI元素之上。在本项目"PopupSamples.7z"中,我们可以期待看到一系列的...
为了实现关闭功能,我们需要监听`popup-close`按钮的点击事件: ```javascript popupClose.addEventListener('click', function() { popup.style.display = 'none'; }); ``` 此外,我们还可以为其他触发事件...
在模拟ToolTip的过程中,我们需要监听目标元素(例如,按钮或其他UI元素)的鼠标事件。当鼠标悬停在目标元素上时,我们将Popup的`IsOpen`属性设置为`true`,使其显示;当鼠标离开目标元素时,将其设置为`false`,...
Popup在IT领域通常指的是弹出窗口或提示框,它是一种用户界面元素,用于显示临时信息、警告、确认或请求用户输入。在网页设计、应用程序开发和操作系统交互中,Popup经常被使用,为用户提供额外的交互可能性。 在...
4. **控制`Popup`的打开和关闭**:可以设置一个布尔属性`IsFilterOpen`来控制`Popup`的显示和隐藏,这个属性应绑定到视图模型,并在适当的时候(如点击筛选按钮、窗口加载等事件)改变其值。 5. **优化用户体验**:...
在WP8.0中,我们可能需要自定义一些事件处理来实现这个功能,例如监听Popup的Open和Close事件。 在`FlyoutTest`项目中,可能包含了实现这个功能的具体代码文件,如`MainPage.xaml`和`MainPage.xaml.cs`。在这个项目...
在描述中只提到了“as97Popup.ocx”,这可能是指该控件的主要功能或特定用途,但没有提供足够的信息来详细解释其具体功能。通常,这样的控件可能会涉及到弹出窗口、对话框或者一些自定义的用户界面元素。由于名字中...
本文介绍了一种重写`QComboBox`鼠标点击事件的方法,具体来说,是通过重写`QComboBox`的`showPopup()`方法来实现某种特定功能(例如自动检测串口)。这种方法可以用来添加一些额外的功能,如自动更新下拉列表中的...
标题中的"reactnative popup-dialog"指的是在React Native环境中实现的一个弹出对话框组件。 在React Native中,`popup-dialog`通常是一个自定义组件,用于模拟原生应用中的对话框效果,提供用户交互。这样的组件...