Просмотр полной версии : HTTPService - e4x - Как правильно за-Bind-ить?
Есть XML:
<pro>
<info id="aaa">
AAAAA
</info>
<info id="bbb">
BBBBB
</info>
<info id="ccc">
CCCCC
</info>
</pro>
И MXML:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="htSer.send()" >
<mx:HTTPService url="info.xml" id="htSer" resultFormat="e4x" />
<mx:List dataProvider="{htSer.lastResult.info}" width="373">
<mx:itemRenderer>
<mx:Component>
<mx:Text text="{data.@id}" />
</mx:Component>
</mx:itemRenderer>
</mx:List>
</mx:Application>
Работает но выдаёт ошибку:
warning: unable to bind to property 'id' on class 'XML' (class is not an IEventDispatcher)
Как правильно биндить в таком случае? Пробывал и XMLListCollection, но таже ошибка :wacko:
RetKiller
05.05.2009, 19:05
Точно такая же проблема :) Я просто внимания не обращаю,если честно. Но все равно интересно,как делать по уму ;)
Ой, не посмотрел сначала.
override public function set data(value:Object):void
{
myText.text = (value as XML).@id;
}
wvxvw, можно подробнее, как это в мой пример воткнуть, а то ничего не понял :(
<mx:Text text="{data.attribute('id')}" />
так warning не выдаёт.. по крайней мере по этому поводу) но ругается на htSer.lastResult.info
Да не, это тоже самое. Тут советуют юзать ArrayCollection, т.к. он поддерживает live update данных, что мне в принципе не нужно, но всё равно интересно.
Проблема в юзании ArrayCollection-а, что теряются Text узлы при переводе в Object.
wvxvw, можно подробнее, как это в мой пример воткнуть, а то ничего не понял :(
Это вставить в рендерер -
<mx:Scrip>
<![CDATA[
сюда
]]>
<mx:Script>
@fljot:
Там проблема не в том, что данные в виде XML, а в том, что свойство data не IEventDispatcher :)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="htSer.send()" >
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
myText.text = (value as XML).@id;
}
]]>
</mx:Script>
<mx:HTTPService url="info.xml" id="htSer" resultFormat="e4x" />
<mx:List dataProvider="{htSer.lastResult.info as XMLList}" width="373">
<mx:itemRenderer>
<mx:Component>
<mx:Text id="myText" text="{data.@id}" />
</mx:Component>
</mx:itemRenderer>
</mx:List>
</mx:Application>
myText.text = (value as XML).@id; <---- Обращение к несуществующему свойству "myText" .
Во я о чём :rolleyes:
Это вставить в рендерер
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="htSer.send()"
>
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
private function resultHandler(event:ResultEvent):void
{
trace(event.result);
trace(htSer.lastResult.children());
}
]]>
</mx:Script>
<mx:HTTPService
url="info.xml"
id="htSer"
resultFormat="e4x"
result="resultHandler(event)"
/>
<mx:List
dataProvider="{htSer.lastResult.children()}"
width="373"
>
<mx:itemRenderer>
<mx:Component>
<mx:Text>
<mx:Script>
<![CDATA[
override public function set data(value:Object):void
{
text = (value as XML).@id;
}
]]>
</mx:Script>
</mx:Text>
</mx:Component>
</mx:itemRenderer>
</mx:List>
</mx:Application>
Упс, не прочёл пр рендерер, но хм.. всё равно вылазиит:
warning: unable to bind to property 'info' on class 'XML' (class is not an IEventDispatcher)
Сори, я прямо на месте правил, было пару ошибок, попробуй еще раз.
О, благодарствую! Теперь разобрался :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.