Я написал следующий пользовательский компонент 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>
Я устанавливаю этот компонент в родительский пользовательский компонент, используя следующий код:
<com:SubNavBar id="subNavMenu" menuItems="{subNavConfig}"
x="10" y="-15">
</com:SubNavBar>
Каждый раз, когда функция trace
выполняется в init()
, свойство menuItems
возвращает null
. Похоже, у меня нет этой проблемы с другими типами переменных, такими как Boolean или String. Это связано с размером объекта XMLListCollection? Как я могу настроить этот пользовательский компонент SubNavBar с помощью свойства XMLListCollection и привязать его к элементу управления в компоненте?
Благодарность!
2 ответа
Я протестировал этот код, и мне показалось, что у меня все работает. Вы уверены, что правильно настроили переменную subNavConfig?
Вот код клиента, который я использовал:
// 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>
И вот результат, который я получил:
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 & the Bazaar"/>
<book publisher="O'Reilly Media" name="Unit Test Frameworks"/>
Возможно, я что-то упускаю, но где вы настраиваете {subNavConfig}?
Изменить:
Это может быть из-за того, как он кастуется ... попробуйте что-нибудь вроде ...
var listcol:XMLListCollection = new XMLListCollection(configXML.destination.(@mapID == mapID).subSections);
Похожие вопросы
Новые вопросы
apache-flex
Apache Flex [НЕ CSS FLEXBOX] - это среда для разработки многофункциональных интернет-приложений, работающих в Flash Player или Adobe Air. Изначально разработанный компанией Adobe, Flex был подарен Apache Software Foundation в 2011 году и стал проектом Apache высшего уровня в декабре 2012 года.