有没有办法在 mxml 中声明一个私有/受保护甚至是静态的子组件?
当然我们可以在脚本标签中做到这一点,但还有其他方法吗?
Ashier 建议使用“排除”元数据标签,但 Maskit 提供了它的限制并建议了替代解决方案:
http://blog.ashier.com/2008/03/25/hiding-properties-in-flex-components/
http://smaskit.blogspot.com/2008/07/making-mxml-subcomponent-private.html
在这些术语的严格含义中,不,你不能使用 mxml 来做到这一点。Luis 发布的第二个链接包含一些私有/受保护行为的解决方法。
我找到了解决静态问题的方法。我想要一个可以在移动应用程序的任何地方访问的快速记事本,而不会覆盖在另一个屏幕上打开的编辑。
我创建了一个记事本 mxml 控件,然后将它放在顶级应用程序 mxml 的声明部分中。在我希望备忘录出现的每个视图中,我都添加了:
import mx.core.FlexGlobals;
import components.QuickMemo;
private var memo:QuickMemo;
在视图创建完成中:
memo = FlexGlobals.topLevelApplication.memo;
在 viewActivation 代码中,我添加了:
memo.visible = false;
addElement(memo);
在 viewDeactivation 代码中,我包括:
removeElement(memo);
最终效果是在任何时候只存在一个备忘录实例,并且一个实例以它在上一次出现的视图中存在的任何状态打开。