PDA

Просмотр полной версии : MXML: Склеивание строки в свойстве (вызов функции из функции)


Exey
19.07.2006, 21:09
xml файл хранит ссылку

...
<item>
<dc:link>how/id/runail/index.xml</dc:link>
</item>
...


getField( XML( linksItems.currentItem ), how1Link ) возвращает 'how/id/runail/index.xml' строкой


...
<mx:Repeater width="80%" id="linksItems" dataProvider="{ how1externalXML }">
<mx:LinkButton click="loadXML2('{ getField( XML( linksItems.currentItem ), how1Link ) }');" label="кнопка для ссылки" />
</mx:Repeater>
...


Так работает
<mx:LinkButton click="loadXML2('how/id/runail/index.xml');" label="кнопка для ссылки" />

Как вклеить возвращенное getField'ом в вызов loadXML2(); ?

Exey
25.07.2006, 15:31
Почему так не работает? :rtfm:

loadXML2('{ getField( XML( linksItems.currentItem ), how1Link ) }')

fishbounce
25.07.2006, 16:17
а так не будет?

{loadXML2( getField( XML( linksItems.currentItem ), how1Link ) )}

без всяких кавычек там...

Exey
25.07.2006, 16:52
а так не будет?
Код:
{loadXML2( getField( XML( linksItems.currentItem ), how1Link ) )}
без всяких кавычек там...

Тогда дебагер говорит:

Error: Repeater is not executing.
at mx.core::Repeater/get currentItem()[C:\dev\GMC\sdk\frameworks\mx\core\Repeater.as:325]
at MySite/___Button6_click()[C:\Documents and Settings\Administrator\My Documents\Flex Builder 2\MySite\MySite.mxml:202


А фигурные скобки, судя по хелпу "Определяют выражение, которое используется в XML или XMLList initializer"

fishbounce
25.07.2006, 18:28
фигурные скобки - это data binding.
Вариант такой:
делаешь компоненту, например,
URLButton extends LinkButton
у которой делаешь св-во url ([Inspectable]), к примеру.
Далее в своем коде пишешь так:

<mx:Repeater width="80%" id="linksItems" dataProvider="{ how1externalXML }">
<custom:URLButton click="loadXML2(URLButton(event.target).url);" url="{getField( XML( linksItems.currentItem ), how1Link )}" label="кнопка для ссылки" />
</mx:Repeater>

fishbounce
25.07.2006, 18:30
да, кстати, чтобы написать <custom:URLButton /> нужно задать в Application тэге xmlns соответствующую, т.е. xmlns:custom="путь к пакету где компонента лежит"

Exey
26.07.2006, 11:01
делаешь компоненту, например,
URLButton extends LinkButton
у которой делаешь св-во url ([Inspectable])



<?xml version="1.0" encoding="utf-8"?>
<mx:LinkButton xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
[Inspectable]
public var url:String;
]]>
</mx:Script>
</mx:LinkButton>


Заработало, спасибо :yahoo: