C'è un modo per mappare un tag in flex ai componenti in più directory?
-
03-07-2019 - |
Domanda
Data un'applicazione o un modulo flessibile, è possibile specificare uno spazio dei nomi XML personalizzato come segue:
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:custom="custom.namespace.*">
Possiamo quindi fare riferimento ai componenti mxml nella directory custom / namespace / usando il tag personalizzato. Ad esempio, se ho i componenti Custom1 e Custom2 nella directory custom / namespace, posso fare riferimento ad essi in questo modo:
<custom:Custom1/>
<custom:Custom2/>
C'è un modo per mappare più directory sullo stesso tag? Cioè, se ho componenti in una sottodirectory di custom / namespace, come custom / namespace / sub con il componente SubCustom1, c'è un modo per modificare il documento flessibile in modo che il tag personalizzato possa fare riferimento a SubCustom1?
Nota che una soluzione alternativa che ho trovato è stata l'aggiunta di un nuovo tag per ogni directory (ad esempio xmlns: custom.sub = " custom.namespace.sub. * " ;, e quindi:
<custom.sub:SubCustom1>
Questa soluzione sembra però un kludge.
Soluzione
Per creare uno spazio dei nomi personalizzato in flex è necessario
1) Crea un file manifest personalizzato: ad esempio
<?xml version="1.0" encoding="utf-8" ?>
<componentPackage>
<component id="Accordion" class="mx.containers.Accordion"/>
....
2) Aggiungi qualcosa di simile al seguente al tuo file 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>
Puoi leggere una spiegazione più dettagliata qui .
A questa domanda è stata anche data risposta qui .
Altri suggerimenti
La denominazione segue direttamente dalla specifica XML per gli spazi dei nomi. Se vuoi cambiare personalizzato
per fare riferimento alla sottodirectory cambia la dichiarazione dello spazio dei nomi:
xmlns:custom="custom.namespace.*"
a
xmlns:custom="custom.namespace.sub.*"