¿Hay alguna manera de asignar una etiqueta en flex a componentes en múltiples directorios?
-
03-07-2019 - |
Pregunta
Dada una aplicación o módulo flexible, puede especificar un espacio de nombres xml personalizado de la siguiente manera:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="custom.namespace.*">
Podemos referirnos a los componentes mxml en el directorio custom / namespace / usando la etiqueta personalizada. Por ejemplo, si tengo los componentes Custom1 y Custom2 en el directorio custom / namespace, puedo referirme a ellos de la siguiente manera:
<custom:Custom1/>
<custom:Custom2/>
¿Hay alguna manera de asignar múltiples directorios en la misma etiqueta? Es decir, si tengo componentes en un subdirectorio de custom / namespace, como custom / namespace / sub con el componente SubCustom1, ¿hay alguna forma de modificar el documento flexible para que la etiqueta personalizada pueda referirse a SubCustom1?
Tenga en cuenta que una solución alternativa que encontré fue agregar una nueva etiqueta para cada directorio (por ejemplo, xmlns: custom.sub = " custom.namespace.sub. * " ;, y luego:
<custom.sub:SubCustom1>
Sin embargo, esta solución parece un error.
Solución
Para crear un espacio de nombres personalizado en flex necesita
1) Cree un archivo de manifiesto personalizado: por ejemplo,
<?xml version="1.0" encoding="utf-8" ?>
<componentPackage>
<component id="Accordion" class="mx.containers.Accordion"/>
....
2) Agregue algo similar a lo siguiente a su archivo 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>
Puede leer una explicación más detallada aquí .
Esta pregunta también fue respondida aquí .
Otros consejos
La denominación se sigue directamente de la especificación XML para espacios de nombres. Si desea cambiar personalizado
para hacer referencia al subdirectorio, cambie la declaración del espacio de nombres:
xmlns:custom="custom.namespace.*"
a
xmlns:custom="custom.namespace.sub.*"