2009-06-02 4 views
0

그것과 같이, 심지어는 동적 객체에 대해 객체 인스턴스를 선언하는 것이 가능하다 :사전 선언은 가능합니까? MXML에서

<mx:Object> 
    <mx:foo>bar</mx:foo> 
    <mx:bar>foo</mx:bar> 
</mx:Object> 

는 일부 MXML 래퍼 클래스를 사용하지 않고 사전 클래스와 동일한 기능을 수행 할 수 있습니까?

답변

6

나는이 질문을 잘 이해하고 있지는 않지만, MXML로 사전을 선언 할 수 있는지 묻는다면, 할 수있다. 여기에 동적으로 사전에 항목을 추가하는 방법을 보여주는 형태와 함께 MXML에 선언 된 사전을 보여주는 몇 가지 코드는 다음과 같습니다 도움이

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:utils="flash.utils.*" creationComplete="onCreationComplete()"> 

    <mx:Script> 
     <![CDATA[ 

      private function onCreationComplete():void 
      { 
       showContents(); 
      } 

      private function onBtnClick():void 
      { 
       addProperty(); 
       showContents(); 
      } 

      private function showContents():void 
      { 
       txt.text = ""; 

       for (var k in d) 
        txt.text += k + ": " + d[k] + "\n" 
      } 

      private function addProperty():void 
      { 
       d[pname.text] = pvalue.text; 

       pname.text = ""; 
       pvalue.text = ""; 

       pname.setFocus(); 
      } 

     ]]> 
    </mx:Script> 

    <mx:VBox> 
     <mx:Label text="Dictionary Contents" /> 
     <mx:TextArea id="txt" width="350" height="200" /> 
     <mx:HBox> 
      <mx:VBox> 
       <mx:Label text="New Property Name" /> 
       <mx:TextInput id="pname" text="pets" /> 
      </mx:VBox> 
      <mx:VBox> 
       <mx:Label text="New Property Value" /> 
       <mx:TextInput id="pvalue" text="dog, cat, fish" /> 
      </mx:VBox> 
     </mx:HBox> 
     <mx:Button id="btn" label="Add" click="onBtnClick()" /> 
    </mx:VBox> 

    <utils:Dictionary id="d"> 
     <utils:fname>Chris</utils:fname> 
     <utils:lname>Nunciato</utils:lname> 
    </utils:Dictionary> 

</mx:Application> 

희망! 내가 완전히 그 지점을 놓친 경우, 뒤로 물러서서 내가 도울 수 있는지 알게 될 것이다. 당신이 바로 네임 스페이스를

<mx:Application ... xmlns:utils="flash.utils.*"> 
     <utils:Dictionary> 
      <utils:foo>bar</utils:foo> 
      ... 
     </utils:Dictionary> 
     ... 

를 가져하지만이 작업을 수행하는 좋은 이유가없는 경우

+0

고마워, 이것이 우리가 단순히 Dictionary가 mx 네임 스페이스에 없다는 사실을 몰랐던 신참자의 실수 였음이 드러났습니다! –

0

아니요, 사전이 MXML에 바인딩되어 있다고 생각하지 않습니다.

정말 원하는 것을 사전이 필요합니까?

1

이 가능합니다. 일반적인 Object (또는 < mx : Model>)에 대한 사전의 장점은 일반적으로 사용하는 것으로 String 이외의 객체를 키로 사용할 수 있다는 것입니다. 그러나 MXML에 문자열이 아닌 키를 쓸 수는 없습니다.

다른 말로 표현하면 : 예를 만들 수는 있지만 요점은 없습니다.

+0

하나의 상황을 제외하고 동의합니다. MXML을 사용하여 모의 (mock) 데이터를 만드는 경우가 종종 있습니다. 왜냐하면이 형식이 효율적으로 효율적으로 작동하기 때문입니다. MXML에서는 모의 값 객체 또는 다른 유형의 모의 객체를 AS보다 읽고 쓰는 것이 훨씬 쉽습니다. 하지만 그래, 그렇지 않으면 너의 감정에 동의한다. –

+0

+1은 아무런 의미가 없습니다. Dict는 비 문자열 키에 적합합니다. 그렇지 않으면 Object를 사용하십시오. –

관련 문제