Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 向Flex 4用户界面添加权限(无状态)_Apache Flex_Actionscript 3_User Interface_Permissions_Flex4 - Fatal编程技术网

Apache flex 向Flex 4用户界面添加权限(无状态)

Apache flex 向Flex 4用户界面添加权限(无状态),apache-flex,actionscript-3,user-interface,permissions,flex4,Apache Flex,Actionscript 3,User Interface,Permissions,Flex4,我在Flex4.1中工作,我有一个viewstack和tabbar作为我的主要导航。用户登录到应用程序,然后应该只能看到哪些选项卡可用于其用户级别 我尽量坚持使用MXML,因为它与框架配合得很好。但是想到这我就麻木了。这样做的常见做法是什么 仅供参考:对于州来说,用户级别有点复杂。有很多选择,许多州和州团体都可以选择 对于那些感兴趣的人来说,这是一个非常酷的图书馆。它有点老了,而且似乎没有太多的动力去扩展它,超越UIComponents。因此,就我而言,这是行不通的 同样,您如何设置这些系统 更

我在Flex4.1中工作,我有一个viewstack和tabbar作为我的主要导航。用户登录到应用程序,然后应该只能看到哪些选项卡可用于其用户级别

我尽量坚持使用MXML,因为它与框架配合得很好。但是想到这我就麻木了。这样做的常见做法是什么

仅供参考:对于州来说,用户级别有点复杂。有很多选择,许多州和州团体都可以选择

对于那些感兴趣的人来说,这是一个非常酷的图书馆。它有点老了,而且似乎没有太多的动力去扩展它,超越UIComponents。因此,就我而言,这是行不通的

同样,您如何设置这些系统

更新: 我不得不妥协,但最终结果却相当不错。该系统现在以建设性的方式工作,而不是破坏性地设置权限(开始时所有内容都可用,然后删除元素)。以下是一个示例:

[Bindable]
public var managePage:ManagePage;
[Bindable]
public var reportPage:ReportPage;

    ...

switch(permission)
{
    case "create":
        navigatorContent.label = "Manage";
        navigatorContent.addElement(managePage);
        viewStack.addElementAt(navigatorContent,1);
            break;
    case "read":
        navigatorContent.label = "Report";
        navigatorContent.addElement(reportPage);
        viewStack.addElementAt(navigatorContent,2);
            break;
}

显然,这只是为了添加元素,但删除它们也同样容易。这个解决方案为我留下了我想要的一切,所以我很高兴。

出于所有目的,您必须构建自己的框架来处理应用程序的权限/安全问题。TabBar组件可以接受数据提供者,因此只需根据用户登录创建一个;这是一种基于用户修改导航的简单方法

因此,更详细的最终解决方案是:

[Bindable]
protected var managePageView:NavigatorContent;
[Bindable]
protected var managePage:ManagePage;
[Bindable]
protected var reportPageView:NavigatorContent;
[Bindable]
protected var reportPage:ReportPage;

    ...

public function permissionCreate(permission:String):void
{
    switch(permission)
    {
        case "create":
            managePageView.label = "Manage";
            managePageView.addElement(managePage);
            viewStack.addElementAt(managePageView,1);
                break;
        case "read":
            reportPageView.label = "Report";
            reportPageView.addElement(reportPage);
            viewStack.addElementAt(reportPageView,2);
                break;
    }
}
public function permissionRemove(permission:String):void
{
    switch(permission)
    {
        case "create":
            managePageView.removeElement(managePage);
            viewStack.removeElementAt(managePageView,1);
                break;
        case "read":
            reportPageView.removeElement(reportPage);
            viewStack.removeElementAt(reportPageView,2);
                break;
    }
}

我也打算在下个月左右将其转化为一个库。

我认为您的解决方案是可靠的,但在我使用的应用程序框架/方法体系中,它的效果并不理想。不过,我确实采纳了你一半的建议。我基本上有一个交换机,根据传入的权限添加/删除元素。请参阅更新。很高兴您可以使用它。如果你觉得我的答案不配得到“正确”的分数;一定要写下你自己的答案,并选择正确的答案。像这样的问题很难回答,因为它们是非常开放的。