private function foo():Boolean{ //do something}看起来它至少对我不起作用。我知道我可以像visible="{something == true && somethingElse == fa">
我能在flex的属性中写一个函数吗?如下所示:
<s:Button id="btn" label="text" visible="{foo()}"/>
private function foo():Boolean
{
//do something
}
看起来它至少对我不起作用。
我知道我可以像visible="{something == true && somethingElse == false}"
一样写,但我需要它来做更多像for
循环之类的事情。
发布于 2011-10-18 15:19:46
这个实现是不可绑定的--如果foo()的结果改变了,它将不会反映在你的显示列表中。
不过,我认为一旦创建完成,这应该会起作用:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600">
<fx:Script>
<![CDATA[
private function foo():Boolean
{
return false;
}
]]>
</fx:Script>
<s:Button label="text"
visible="{foo()}" />
</s:Application>
一种更好的方法是结合表示模型,利用如下所示的绑定:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
[Bindable]
public var presentationVisible:Boolean = true;
private var timer:Timer = new Timer(500);
private function foo():void
{
presentationVisible = Math.random() > 0.5 ? true : false;
}
protected function creationCompleteHandler(event:FlexEvent):void
{
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
}
protected function timerHandler(event:TimerEvent):void
{
foo();
}
]]>
</fx:Script>
<s:Button label="text"
visible="{presentationVisible}" />
</s:Application>
发布于 2011-10-18 17:54:25
试试这个:
[Bindable(event="update")]
private function foo():Boolean
{
return a && b && c;
}
当a、b或c发生变化时,只需这样做:
dispatchEven(new Event("update"));
https://stackoverflow.com/questions/7808640
复制相似问题