ApplusForm에서 개발언어로 사용되는 것이 MOML입니다.
MOML은 XML과 동일한 문법으로 구성되므로 XML로 정의된 API라고 볼 수도 있습니다.
LABEL, WINDOW와 같은 UI Object는 stack에 쌓이듯이 소스에 배치한 순서대로 화면에 노출됩니다.
영역이 겹친다면 소스상에 나중에 배치한
소스만 보더라도 직관적으로 이해할 수 있습니다.
하지만, FUNCTIONLIST, UI등은 호출되는 순서가 정해져 있습니다.
배치하는대로 호출되지 않습니다.
아래 소스는 MOML의 한페이지를 구성하는 요소들입니다.
<MOML>
<THEMES>
<THEME />
</THEMES>
<DATASOURCELIST>
<DATASOURCE />
</DATASOURCELIST>
<UI>
<UILAYOUT>
<WINDOW />
</UILAYOUT>
</UI>
<FUNCTIONCALL/>
<FUNCTIONLIST>
<FUNCTION>
<FUNCTIONITEM />
</FUNCTION>
</FUNCTIONLIST>
</MOML>
THEMES는 <UI>
의 attribute를 공통으로 정의해서 사용할 수 있도록 만들어둔 일종의 define이라고 볼 수 있습니다.
따라서, <UI>
가 생성될 때 참조하는 값일 뿐이지 자체적으로 특정 기능을 수행하지는 않습니다.
THEMES를 제외한 실행순서는 다음과 같습니다.
<DATASOURCELIST> → <UI> → <FUNCTIONCALL>
<DATASOURCELIST>
의 데이터를 모두 얻어온 후에
<UI>
에서 <DATASOURCE>
의 값을 이용해서 구성해야 하는 경우가 있으므로 모든 <DATASOURCE>
는 <UI>
에 우선합니다.
<UI>
가 생성되어 메모리에 모두 로드 완료되면 <FUNCTIONCALL>
이 실행됩니다.
<FUNCTIONCALL>
은 화면이 매번 보여질 때마다 실행되지 않는 것이 특징입니다.
현재 페이지가 처음 로드될 때만 호출이 되고 HIDE, SHOW될 때에는 호출되지 않습니다.
현재 페이지가 SHOW, HIDE될 때마다 특정 <FUNCTION>
이 호출되도록 하고 싶다면,
<UI>
의 특정 OBJECT에 다음과 같이 event handler를 설정하는 것이 좋습니다.
<FUNCTIONLIST>
<FUNCTION id="doShow">
<FUNCTIONITEM cmd="device.toastPopup('show')"/>
</FUNCTION>
<FUNCTION id="doHide">
<FUNCTIONITEM cmd="device.toastPopup('hide')"/>
</FUNCTION>
</FUNCTIONLIST>
<UI>
<UILAYOUT portrait="320,460">
<WINDOW layout="auto,auto" onShow="function.doShow" onHide="function.doHide"/>
</UILAYOUT>
</UI>
이제 이 페이지가 화면에 보여질 때에는 ‘show’ 팝업이 출력되고, 사라질 때에는 ‘hide’ 팝업이 출력됩니다.
이로써 MOML의 실행 순서를 간략하게 살펴보았습니다.
PS.
<UI>
가 그려진 상태에서 서버에서 데이터를 받아온 후 UI에 적용하고 싶은 경우에는..
<DATASOURCE>
를 사용하기 보다는 http로 데이터를 얻어와서 UI에 적용하는 것이 좋습니다.
'Mobile > ApplusForm' 카테고리의 다른 글
Profile Template B01 소스 분석(1)_앱플러스폼(ApplusForm, AppForm) (0) | 2013.10.25 |
---|---|
UI의 Attribute값을 변경하는 방법_앱플러스폼(ApplusForm, AppForm) (0) | 2013.10.25 |
VideoClipB01을 활용한 앱 만들기_앱플러스폼(ApplusForm, AppForm) (1) | 2013.10.25 |
Video Clip B01 소스 분석_앱플러스폼(ApplusForm, AppForm) (0) | 2013.10.25 |
SlideMenuA02를 활용한 앱 만들기_앱플러스폼(ApplusForm, AppForm) (1) | 2013.10.08 |