According to the Flex docs,只要属性是可绑定的,你可以简单地做到这一点(我已经包含了两个额外的按钮来演示):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
[Bindable]
private var currentUser:String = "Bill";
private function isUserAllowed(user:String):Boolean
{
if (user == "Bill")
{
return true;
}
return false;
}
]]>
</mx:Script>
<mx:VBox>
<mx:Button label="My Button" enabled="{isUserAllowed(currentUser)}" />
<mx:HBox>
<mx:Button label="Try Tom" click="{currentUser = 'Tom'}" />
<mx:Button label="Try Bill" click="{currentUser = 'Bill'}" />
</mx:HBox>
</mx:VBox>
</mx:Application>
没有currentUser标记为[绑定],虽然,它赢得没有工作。另一种方法,如果你想更直接地绑定到函数(这也表示在文档中),可以让函数响应当前用户发生更改时发送的事件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()">
<mx:Script>
<![CDATA[
private var _currentUser:String = "Bill";
public function set currentUser(value:String):void
{
if (_currentUser != value)
{
_currentUser = value;
dispatchEvent(new Event("userChanged"));
}
}
[Bindable(event="userChanged")]
private function isUserEnabled():Boolean
{
if (_currentUser == "Bill")
{
return true;
}
return false;
}
]]>
</mx:Script>
<mx:VBox>
<mx:Button label="My Button" enabled="{isUserEnabled()}" />
<mx:HBox>
<mx:Button label="Try Tom" click="{currentUser = 'Tom'}" />
<mx:Button label="Try Bill" click="{currentUser = 'Bill'}" />
</mx:HBox>
</mx:VBox>
</mx:Application>
所以有几种方法。国际海事组织,第二个看起来似乎更合适,但第一个没有错。祝你好运!
但是,在我的参数传递给函数isUserAllowed?我想在试图设置enabled属性时动态地调用该函数。 – SkunkSpinner 2009-01-15 01:50:34
试试这个,我更新了它。 – ForYourOwnGood 2009-01-15 01:54:40
该变量将成为全局变量,不需要将其传递给该函数。 – ForYourOwnGood 2009-01-15 19:39:47