29 Agosto 2007
Flex e l’utilizzo dell’operatore logico AND (&&) all’interno di codice mxml
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



English version available
Informazioni su questo blog
Abbonati ai Feed RSS di questo Blog
Scarica il nostro software

