событие функции отправки из приложения в компонент - PullRequest
0 голосов
/ 09 мая 2011

Мне нужно будет выполнить функцию в comp1.mxml из main.mxml через событие, я обнаружил, что это трудно понять, и я не могу заставить его работать. Предположим,

main.mxml

public function run():void {
//call a function in comp1.mxml
}

и в comp1.mxml:

public function runComponent():void {

}

Нужны ли метаданные в этом случае и как заставить их работать?

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Это действительно зависит от того, что вы пытаетесь сделать, но как это работает, так это то, что основное приложение просто вызывает публичную функцию для своих детей и не использует событие.

Другой способ - использовать платформу приложений, такую ​​как Parsley, RobotLegs или Swiz, чтобы вы могли выполнять такие «подключения», но в этом случае это может быть нежелательно.

Так что да, я думаю, что вы хотите сделать что-то вроде этого:

<s:Application creationComplete="comp.runComponent()">
   <comp:Comp1 id="comp" />
</s:Application>
0 голосов
/ 09 мая 2011

Основная цель модели событий - реализовать Шаблон наблюдателя для обеспечения слабой связи между компонентами. Позвольте нам иметь компонент с именем 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...