Home Page

29 Agosto 2007

Flex e l’utilizzo dell’operatore logico AND (&&) all’interno di codice mxml

Flag UK English version available

Prima o poi, durante lo sviluppo di un’applicazione Flex, vi capiterà di dover utilizzare l’operatore logico AND (&&) dentro il codice mxml, come nell’esempio che segue:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="vertical">
    <mx:CheckBox label="Check me" id="cb1" click="{}" />
    <mx:CheckBox label="Check me" id="cb2" click="{}"/>
    <mx:Button label="Now you can click me" id="bt1"
      enabled="{cb1.selected && cb2.selected}" />
</mx:Application>

Il compilatore darà errore, perché cercherà di interpretare il primo & della coppia && come un’entità.

Ho trovato due soluzioni a questo problema qui; consistono nel sostituire ciascun carattere & con l’equivalente entità, quindi && diventa && oppure nel trasformare l’operazione AND in una sua equivalente logica. Quest’ultima soluzione è meno maneggevole soprattutto se si deve utilizzare più volte l’operatore AND.

Una terza soluzione possibile è la seguente:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="vertical">
    <mx:Script>
    <![CDATA[
      private function and(p1:Boolean, p2:Boolean):Boolean {
        return p1 && p2;
      }
    ]]>
    </mx:Script>
    <mx:CheckBox label="Check me" id="cb1" click="{}" />
    <mx:CheckBox label="Check me" id="cb2" click="{}"/>
    <mx:Button label="Now you can click me" id="bt1"
      enabled="{and(cb1.selected, cb2.selected)}" />
</mx:Application>

Flex and logical AND (&&) operator usage inside mxml code

In developing Flex applications you may need to use logical AND operator (&&) inside mxml code, as in the following code example:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="vertical">
    <mx:CheckBox label="Check me" id="cb1" click="{}" />
    <mx:CheckBox label="Check me" id="cb2" click="{}"/>
    <mx:Button label="Now you can click me" id="bt1"
      enabled="{cb1.selected && cb2.selected}" />
</mx:Application>

Actually the Flex compiler won’t compile this code blaming that the entity name must immediately follow the ‘&’ in the entity reference that is trying to interpret the first & as the starting name of an entity.

You can find a couple of solutions here. The one I prefer consists of replacing the & character into its equvalent html entity & but you can also implement the solution below:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="vertical">
    <mx:Script>
    <![CDATA[
      private function and(p1:Boolean, p2:Boolean):Boolean {
        return p1 && p2;
      }
    ]]>
    </mx:Script>
    <mx:CheckBox label="Check me" id="cb1" click="{}" />
    <mx:CheckBox label="Check me" id="cb2" click="{}"/>
    <mx:Button label="Now you can click me" id="bt1"
      enabled="{and(cb1.selected, cb2.selected)}" />
</mx:Application>

Pubblicato in Flex

Leave a Reply

TROVA:

Informazioni su questo blog Informazioni su questo blog Abbonati ai Feed RSS di questo Blog Abbonati ai Feed RSS di questo Blog Scarica il nostro software Scarica il nostro software
Story of Stuff