기존의 MXML에서는 id라는 속성은 미리 정의된 속성으로서, MXML Document에서 해당 컴포넌트의 Identifier를 가리키는 속성이었고, 또 다른 의미로는 사용할 수 없었다.

예를 들면, 자신이 개발한 컴포넌트에 사용자 ID를 가리키는 속성명을 id라고 하고 싶어도, MXML에서의 id 속성의 의미와 conflict가 되어, userId 처럼 다른 속성명을 사용해야만 했다.


Qualified ID Attribute의 동작

MXML 2009에서는, Qualified ID Attribute, 즉 id 속성의 네임스페이스를 명시하는 방법으로, 의미의 중첩을 피할 수 있다.

예를 들어,

<test:MyObject fx:id="account" test:id="myID@example.com"/>

이와 같이 명시하게 되면, MyObject의 id 속성에는 myID@gmail.com이 들어가고, MXML Document에서는 this.account 와 같이 접근할 수 있다.


Unqualified ID Attribute의 동작

반면, 아래와 같이 id의 namespace를 명시하지 않은(unqualified id attribute) 경우,

<test:MyObject id="account"/>

컴파일 타임에 MXML Document의 this.account에 MyObject가 지정되지만, MyObject의 id 속성에는 아무런 값도 설정이 되지 않는다.


참고 사항

오늘(현지 기준 12/14/2009) 결정된 사항이라 현재 버전[각주:1]의 Flex SDK에는 아직 적용되지 않았다.[각주:2] 현재 버전의 Flex SDK에 적용이 되었다.[각주:3]


추가 사항

최신 버전의 Flex SDK에서 테스트해본 결과, 아래와 같이 사용하여도 문제가 발생하지 않는다.[각주:4]

<test:MyObject id="account" test:id="myID@example.com"/>

Reference


  1. Revision #12950 기준 [본문으로]
  2. 현재 버전의 SDK에서는 unqualified id attribute의 경우, MyObject와 MXML Document의 id 값이 모두 지정된다. [본문으로]
  3. Revision #12966 기준 [본문으로]
  4. 기존 버전 Flex SDK의 경우, default namespace인 id와 test:id를 함께 사용하면 컴파일 에러가 출력되었음. [본문으로]
저작자 표시 비영리 변경 금지
Posted by 찬익

트랙백 주소 : http://blog.chanik.com/trackback/44 관련글 쓰기

댓글을 달아 주세요

  1. BlogIcon 검쉰 2009/12/16 14:51  댓글주소  수정/삭제  댓글쓰기

    괜춘하군! ㅋ