Включить кнопку, только если 2 поля TextInput не пусты - код и снимок экрана прилагаются

В мобильном приложении Flex (или любом приложении Flex 4) — как включить/отключить кнопку в зависимости от содержимого двух других полей?

введите здесь описание изображения

Я вставляю свой очень простой тестовый код ниже, и проблема с ним заключается в синтаксической ошибке в Flash Builder 4.7: The entity name must immediately follow the '&' in the entity reference. - что, вероятно, означает, что амперсанд является специальным символом, но как решить эту (вероятно, частую) проблему?

TestApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:ViewNavigatorApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    firstView="views.Home" 
    applicationDPI="160">
</s:ViewNavigatorApplication>

представления/Home.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        title="How to enable Login button?">

    <s:layout>
        <s:VerticalLayout paddingTop="8"
            horizontalAlign="center" gap="8" />
    </s:layout>

    <s:Label text="Username:" />
    <s:TextInput id="_username" />
    <s:Label text="Password:" />
    <s:TextInput id="_password" />

    <s:Button id="_login" 
              label="Login" 
              enabled="{_username.text.length > 0 && _password.text.length > 0}" />
</s:View>

person Alexander Farber    schedule 20.12.2012    source источник


Ответы (2)


Вы должны заменить && на &amp;&amp;, когда пишете его вне CDATA в mxml.

Также лучше использовать _username.text!='' вместо _username.text.length > 0, поскольку это вызовет предупреждения во время выполнения, поскольку text не является диспетчером событий и не может сообщать об length изменениях. Тем не менее, он обновит доступность кнопки, потому что text будет изменен сам, а TextInput сообщит об этом, вызывая обновление привязки.

person user1875642    schedule 20.12.2012

при использовании выражений привязки. mxml не рассматривает &&, а записывает ваше выражение как

& усилитель ; & усилитель ;

.... также mxml не читает escape-символы, например. \t для табуляции... лучше напишите свое выражение в скрипте действий, а затем используйте привязку данных .cheers ;-)

person Tawanda Matereke    schedule 27.02.2017