我需要在main.mxml中通过事件执行comp1.mxml中的函数,我发现很难理解并且无法使其工作。假设,
main.mxml
public function run():void {
//call a function in comp1.mxml
}
并在comp1.mxml中:
public function runComponent():void {
}
在这种情况下是否需要元数据以及如何使其工作?
答案 0 :(得分:1)
这取决于你想要做什么,但它是如何工作的主要应用程序只是调用它的子项上的公共函数而不是使用事件。
另一种方法是使用像Parsley,RobotLegs或Swiz这样的应用程序框架,这样你就可以做那些“连接”,但在这种情况下可能不太可能。
所以是的,我认为你想要做的是这样的事情:
<s:Application creationComplete="comp.runComponent()">
<comp:Comp1 id="comp" />
</s:Application>
答案 1 :(得分:0)
事件模型的主要目标是实现Observer pattern以提供组件之间的低耦合。让我们有一个名为main.mxml
的组件,其中包含comp1.mxml
。所以main.mxml
知道comp1.mxml
,这是正常的。 main.mxml
可以毫无问题地调用comp1.mxml
的公共方法。
事件模型使comp1.mxml
无法了解main.mxml
。 main.mxml
订阅comp1.mxml
个事件,comp1.mxml
触发他们调用main.mxml
的方法而不进行耦合。
根据你的问题,你想做一些相反的事情。我认为这不是一个正确的方法。不要使用事件从comp1.mxml
调用main.mxml
的方法。只需按以下方式直接致电runComponent()
:
public function run():void {
myComp1Instance.runComponent();
}