Как создать модель экземпляра, которая может быть передана по всему компоненту (которая может быть создана более одного раза)

StackOverflow https://stackoverflow.com/questions/2874429

Вопрос

Я пытаюсь создать модульную структуру, которая в конечном итоге будет жить внутри другого приложения ActionScript / Flex. Я использую CAirNGORM во внешнем приложении, и я хотел бы создать более одного экземпляра этого нового компонента во внутреннем приложении. Cairngorm не работает для создания нескольких дубликатов компонентов из-за синглтонной природы модели.

Состав, который я создаю, представляет собой просмотрщик Pseudo Video. Я хотел бы иметь совместную модель в пределах этого экземпляра компонента. Я борюсь с способом поделиться одной моделью в компоненте. Если я использую шаблон Singleton, я не могу создать более одного экземпляра этого компонента. Если я создаю экземпляр и позвольте компоненту убедиться, что есть только один, то у меня проблемы легко пропустить модель всем компонентам, которые хотят этого. Это особенно сложно, потому что компоненты .mxml не может иметь конструктор, где я бы прошел в модели.

Я думал о том, чтобы каждый компонент попросил своего родителя для модуля, пока не будет его компонент. Это потребует, чтобы каждый компонент был реализован интерфейсом и чувствует себя немного ICKY для меня.

Кто-нибудь знает способ создать переменную экземпляра в компоненте, чтобы можно было создавать несколько компонентов, но и поделиться этой моделью легко на протяжении всего этого компонента?

Это было полезно?

Решение

Новейший релиз Swiz (1.0.0) Имеет ответ на этот вопрос. Теперь вы можете создать более одного экземпляра SWIZ в проекте и настроить родительские дочерние отношения. Страница поддержки модуля - откуда они объясняют это лучшее (http://swizframework.jira.com/wiki/display/swiz/module+support.) Но на самом деле вам не нужно использовать модули, любые родительские дочерние отношения будут работать.

Просто помните, что, чтобы сохранить каждый обработчик событий от реагирования на событие с дочернего представления, вам необходимо установить объем EventHandler для локального, например:

[EventHandler( event="TestEvent.SAVE_USER_REQUESTED", scope="local")]
public function handleEvent(event:Event):void {
    //do stuff
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top