Custom 컴포넌트에는 MX 컴포넌트를 못쓰는걸까?

컴포넌트를 만들면서 이것저것 해보다가

Could not resolve <mx:columns> to a component implementation.

이런 에러가 발생 했다. myDataGrid라는 컴포넌트를 DataGrid로부터 상속받아서 만들었는데 두번째 라인에서 발생된거다

 <ns1:myDataGrid xmlns:ns1="..." xmlns:mx="...">
 <mx:columns/> <-- 여기서 에러
</ns1:myDataGrid>

네임스페이스 문제인줄은 직감했는데 뭐가 문제일까... custom 컴포넌트에서는 mx 컴포넌트를 사용하지 못하는 걸까... 하다가 말도 안되는거 같아서 또 구굴링 들어가 보니 네임스페이스를 바꿔보라고 한다.

 <ns1:myDataGrid xmlns:ns1="..." xmlns:mx="...">
 <ns1:columns/> <-- 이렇게
</ns1:myDataGrid>

바꿨더니 해결됬다....아니 왜?!! 저게 가능하단 말인가...
근데 당연한거였다. 나는 columns를 컴포넌트로 착각하고 있었던 거다. 근데 columns는 컴포넌트가 아니라 DataGrid의 속성이다. 정확히 말하면 myDataGrid 인스턴스의 속성이다. 그래서 당연히 myDataGrid의 네임스페이스인 ns1으로 접근해야 하는것이 옳다.
 

 <ns1:myDataGrid xmlns:ns1="..." xmlns:mx="...">
 <ns1:columns>
  <mx:DataGridColumn/> <-- 요건 뭔가. 에러나지 않는다!
 <ns1:columns>

</ns1:myDataGrid>

위 구문도 에러가 나지 않는다. 왜냐면 <mx:DataGridColumn/>는 ns1:columns의 속성으로 하나의 독립적인 객체로 생성되기 때문이다. 아무튼 네임스페이스 섞어쓸 수 있다는걸 확인했던 순간이다. 뭐 이전에도 무의식적으로 써왔던거 같기도 하지만.

신고
TAG
트랙백 ( 0 )개 , 댓글 ( 2 ) 개가 달렸습니다.

Commentary

댓글을 달아 주세요.

  1. Favicon of http://blog.flashplatform.kr BlogIcon 검쉰 2009.12.04 09:18 신고  댓글주소  수정/삭제  댓글쓰기

    저도 예전에 동일한 문제로 당황했었고, 다른분들도 당황해서 저에게 묻기도 하시더군요 ^^;
    mx 패키지만 MXML에서 주로 사용하고 커스텀컴포넌트는 AS 로 동적할당하는 습관때문에 그랬던 것 같네요 ^^;;;

Add a Comment

comment에 대한 답변글은 해당 글상자에 있는 "R"(reply)버튼을 클릭하여 작성해 주시기 바랍니다.

티스토리 툴바