Flex - 如何禁用/启用一组组件(或更改属性)
问题描述:
如何在Flex(Flash Builder 4)中启用或禁用一组组件?Flex - 如何禁用/启用一组组件(或更改属性)
例如,如果我有一个包含多个字段的窗口,我想根据用户权限将其禁用。
我知道我可以添加启用=“true”或“启用=”假”,我也可以用启用=‘{writeAccessVar}’
不过,我正在寻找更多的想法,因为我屏幕上可能有多组字段,或者更复杂的用户权限。
例如,我现在将有一个字段具有写入权限,屏幕上的其他字段只能读取某个用户级别的信息
对于更高级别的用户,所有字段都是可写的。更低级别,全部为只读。
谢谢!
答
您可以添加一个变量accessLevel
等于用户的访问级别:
[Bindable]
var accessLevel:int = 0; // 0: low level, 1: next level, 2: next level, an so on
然后,您可以根据accessLevel
设置各个部件的enabled
属性:
enabled="{accessLevel >= 0}"
为了提高代码的可读性,您可以声明不同级别的常量
public static const ACCESS_LEVEL_LOW:int = 0;
public static const ACCESS_LEVEL_NORMAL:int = 1;
public static const ACCESS_LEVEL_HIGH:int = 2;
// ...
enabled="{accessLevel >= ACCESS_LEVEL_LOW}"
// ...
enabled="{accessLevel >= ACCESS_LEVEL_NORMAL}"
// ...
enabled="{accessLevel >= ACCESS_LEVEL_HIGH}"
到目前为止,我决定对此稍做改动。我把它放在我的组件中:enabled =“{app.chkAcc('NW')}”chkAcc是一种方法,我将NW的组名称传递给它。然后在该方法中,我检查用户是否访问级别(或组成员资格),并根据它们是否为NW成员返回true/false。 – 2012-03-24 14:05:35
我遇到的一个问题是 - 当我的应用第一次加载时,我有一个被禁用的按钮,因为用户没有登录。用户登录后,我希望启用按钮,但事实并非如此。它不会调用我的方法,所以我假设我必须进行一些刷新以告诉该窗口重新绘制所有组件。我试过myWindow.invalidateDisplayList(); myWindow.validateNow(); ,但没有区别? – 2012-03-24 14:36:08
您必须像我在示例中那样使用可绑定变量。例如,将'enabled =“{app.chkAcc('NW')}''改为'enabled =”{app.chkAcc(accessLevel)}“',其中'accessLevel'是一个可绑定的变量。实际上,这只是通过调用函数:'enabled =“{app.chkAcc(accessLevel)}”'的一个测试来取代我通过'enabled =“{accessLevel> = 0}”进行的测试。 – sch 2012-03-24 14:47:38