Есть ли способ сопоставить тег во flex с компонентами в нескольких каталогах?

Для гибкого приложения или модуля вы можете указать пользовательское пространство имен xml следующим образом:

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="custom.namespace.*">

Затем мы можем ссылаться на компоненты mxml в каталоге custom/namespace/, используя тег custom. Например, если у меня есть компоненты Custom1 и Custom2 в каталоге custom/namespace, я могу ссылаться на них так:

<custom:Custom1/>
<custom:Custom2/>

Есть ли способ сопоставить несколько каталогов с одним и тем же тегом? То есть, если у меня есть компоненты в подкаталоге custom/namespace, например custom/namespace/sub с компонентом SubCustom1, есть ли способ изменить гибкий документ, чтобы пользовательский тег мог ссылаться на SubCustom1?

Обратите внимание, что один обходной путь, который я нашел, заключался в том, чтобы добавить новый тег для каждого каталога (например, xmlns:custom.sub="custom.namespace.sub.*", а затем:

<custom.sub:SubCustom1>

Однако это решение кажется кладжом.


person mweiss    schedule 04.03.2009    source источник


Ответы (2)


Чтобы создать собственное пространство имен во flex, вам нужно

1) Создайте собственный файл манифеста: например.

<?xml version="1.0" encoding="utf-8" ?>
<componentPackage>

    <component id="Accordion" class="mx.containers.Accordion"/>
    ....

2) Добавьте в файл flex-compiler.xml нечто подобное следующему:

<compiler>
    ...
      <namespaces>
         <!-- Specify a URI to associate with a manifest of components for use as MXML -->
         <!-- elements.                                                                -->
         <namespace>
            <uri>http://mycustomnamespace.com</uri>
            <manifest>custom-manifest.xml</manifest>
         </namespace>
      </namespaces>
</compiler>

Вы можете прочитать более подробное объяснение здесь< /а>.

На этот вопрос также был дан ответ здесь.

person mweiss    schedule 04.03.2009

Именование следует непосредственно из спецификации XML для пространств имен. Если вы хотите изменить custom для ссылки на подкаталог, измените объявление пространства имен:

xmlns:custom="custom.namespace.*"

to

xmlns:custom="custom.namespace.sub.*"
person dirkgently    schedule 04.03.2009
comment
Спасибо за ваш ответ, но я спрашиваю, есть ли способ сопоставить компоненты из обоих каталогов или двух разных каталогов (не обязательно вложенных), а не есть ли способ перейти от одного к другому. - person mweiss; 04.03.2009