2010-08-23 1 views
0

저는 Flex 4.1에서 작업 중이며, 뷰 스택과 탭바를 기본 탐색으로 사용하고 있습니다. 사용자가 응용 프로그램에 로그인하면 사용자 레벨에서 어떤 탭을 사용할 수 있는지 만 볼 수 있습니다.상태가없는 Flex 4 UI에 퍼션 추가

프레임 워크와 잘 작동하기 때문에 최대한 MXML을 고수하려고합니다. 하지만 나는 이것에 대해 생각하지 못하고 있습니다. 이것을하기위한 일반적인 관례는 무엇입니까?

참고 : 사용자 수준은 상태에 대해 약간 복잡합니다. 많은 선택권이 있습니다. 많은 사람들이 편하게 상태/주 그룹을 운영 할 수 있습니다.

Chimp은 흥미로운 도서관입니다. 조금 오래되었지만 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; 
} 

분명히 이것은 요소를 추가하기위한 것일 뿐이지 만 제거하는 것 또한 쉽습니다. 이 솔루션은 제가 찾고 있던 모든 것을 남겨 둡니다. 그래서 저는 행복합니다.

답변

0

그래서 더 정교한 최종 솔루션 :

[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; 
    } 
} 

내가 너무 가고 다음 달 정도에 도서관이 점을 설정하고있다.

1

모든 용도와 목적으로 응용 프로그램의 권한/보안 문제를 처리하기위한 고유 한 프레임 워크를 만들어야합니다. TabBar 구성 요소는 dataProvider를 허용 할 수 있으므로 사용자 로그인을 기반으로 TabBar 구성 요소를 만듭니다. 사용자를 기반으로 네비게이션을 수정하는 쉬운 방법입니다.

+0

나는 당신의 솔루션이 견고하다고 생각하지만, 실행중인 애플리케이션 프레임 워크/방법론에서는 그다지 잘 작동하지 않습니다. 그러나 나는 당신의 충고를 반쯤했습니다. 기본적으로 전달 된 사용 권한을 기반으로 요소를 추가/제거하는 스위치 보드가 있습니다. 업데이트를 참조하십시오. – noazark

+0

다행입니다. 내 대답에 "올바른"표시가 있다고 생각하지 않는다면; 자신의 답을 적어 올바른 답으로 선택하십시오. 이런 질문들은 매우 개방적이기 때문에 힘들다. – JeffryHouser