Por que minhas propriedades XMLListCollection em meus componentes personalizados sempre nulo?

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

Pergunta

Eu escrevi o seguinte componente personalizado, SubNavBar.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="100" width="300"
 creationComplete="init()">

 <mx:Script>
  <![CDATA[
   import mx.collections.XMLListCollection;

   [Bindable] public var menuItems:XMLListCollection;

   private function init():void
   {
    trace("SubNav: config = "+menuItems);
   }


  ]]>
 </mx:Script>

 <mx:HBox y="30" id="menu">
  <mx:List dataProvider="{menuItems}"/>
 </mx:HBox>

</mx:Canvas>

Configuração I esse componente em um componente personalizado pai usando o seguinte código:

<com:SubNavBar id="subNavMenu" menuItems="{subNavConfig}"
 x="10" y="-15">
</com:SubNavBar>

Sempre que a função trace é executado em init(), a propriedade menuItems retornos null. Eu não parecem ter este problema com outros tipos de variáveis, como booleano ou string. É este, devido ao tamanho do objeto XMLListCollection? Como posso configurar este componente personalizado SubNavBar com propriedade XMLListCollection e vinculá-lo a um controle no componente?

Obrigado!

Foi útil?

Solução

Eu testei este código e tudo parecia estar a trabalhar para mim. Tem certeza de que está configurando a variável subNavConfig corretamente?

Aqui está o código do cliente que eu usei:

// Test.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="onInit()" xmlns:ns="comp.*">
  <mx:Script>
    <![CDATA[
      import mx.collections.XMLListCollection;

      [Bindable]
      public var bookCollection:XMLListCollection;

      public function onInit():void
      {
        var books:XML = <books>
                          <book publisher="Addison-Wesley" name="Design Patterns" />
                          <book publisher="Addison-Wesley" name="The Pragmatic Programmer" />
                          <book publisher="Addison-Wesley" name="Test Driven Development" />
                          <book publisher="Addison-Wesley" name="Refactoring to Patterns" />
                          <book publisher="O'Reilly Media" name="The Cathedral & the Bazaar" />
                          <book publisher="O'Reilly Media" name="Unit Test Frameworks" />
                        </books>;

        var booklist:XMLList = books.book;
        bookCollection = new XMLListCollection(booklist);
      }
    ]]>
  </mx:Script>

  <ns:SubNavBar id="fb" menuItems="{bookCollection}"/>
</mx:Application>

E aqui está a saída que eu tenho:

SubNav: config = <book publisher="Addison-Wesley" name="Design Patterns"/>
<book publisher="Addison-Wesley" name="The Pragmatic Programmer"/>
<book publisher="Addison-Wesley" name="Test Driven Development"/>
<book publisher="Addison-Wesley" name="Refactoring to Patterns"/>
<book publisher="O'Reilly Media" name="The Cathedral &amp; the Bazaar"/>
<book publisher="O'Reilly Media" name="Unit Test Frameworks"/>

Outras dicas

Talvez eu estou faltando alguma coisa, mas onde você está definindo {subNavConfig}?

Editar:

Poderia ser por causa de como ele está sendo escalado ... Tente algo como ...

var listcol:XMLListCollection = new XMLListCollection(configXML.destination.(@mapID == mapID).subSections);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top