2009-08-04 2 views
0

드랍 - 다운 메뉴의 첫 번째 항목 (예 : Menu의 인스턴스)이 특별한 경우에 유용하다는 것을 발견했습니다. 나는 웹 서비스에서 제공하는 목록에서 색상을 선택하려는 경우 예를 들어, :플렉스 (Flex) : 목록 또는 메뉴에서 항목을 특별하게 구분합니까?

<mx:PopUpMenuButton id="colorSelelector" 
    dataProvider="{colorsService.lastResult}" /> 

또한 사용자가 입력 할 수있는 특수 경우, "새로운 색상을 입력"할 수 있습니다 목록에없는 새 색상의 RGB 값입니다. 예를 들어 :

<mx:PopUpMenuButton id="colorSelelector" 
    dataProvider="{colorsService.lastResult}" 
    lastOption="{newColor}" /> 

그래서 떨어져 나는 서비스에서 돌아 목록을 변경,이 작업을 수행하는 더 나은 방법이 :

var newColor = { label: "Enter a new color", rgb: null }; 

는 다음과 함께 사용?

(단지 선제 코멘트 :이 사실 색상 따기 목록을 만들려고 아니에요 ... 단순화이다) 당신이하는 dataProvider에 바인딩 할 때, 당신의 특별한 경우를 추가하는 함수를 호출

답변

1

. 예를 들어 :

<mx:PopUpMenuButton id="colorSelector" 
    dataProvider="{addSpecialCases(colorsService.lastResult)}"/> 
1

그래서, 따로 목록을 변경 내가 서비스에서 다시 를 얻을이 작업을 수행 할 수있는 더 좋은 방법은 무엇입니까?

package 
{ 
    import mx.rpc.http.HTTPService; 

    public class MyHTTPService extends HTTPService 
    { 
     public var appendToResult:Object; 

     public function MyHTTPService(rootURL:String=null, destination:String=null) 
     { 
      super(rootURL, destination); 
     } 

     [Bindable("resultForBinding")] 
     override public function get lastResult():Object 
     { 
      //I know what my type is, Array as an example 
      var myResult:Array = operation.lastResult; 
      myResult.push(this.appendToResult) 
      return myResult; 
     } 
    } 
} 
:) (하지만 정말 당신의 결과를 변경한다)

은이 방법은 잘 작동하는 HTTPService를 확장하지 않고, 깨끗한 될 것입니다

관련 문제