'Sencha Touch 2.0.1 + Daum 지도를 이용한 누비자 정보보기 - 로그인창 만들기'에 해당되는 글 1건

  1. 2012.07.17 [펌] Sencha Touch 2.0.1 + Daum 지도를 이용한 누비자 정보보기 - 로그인창 만들기
98..Etc/Sencha Touch2012. 7. 17. 14:06
반응형

출처 : http://blog.naver.com/PostView.nhn?blogId=herossg&logNo=100160797127



(최종 결과 물)



*** 이 페이지는 제가 초보적인 수준에서 작성된 게시물이며,

그냥 지워 버릴까 생각하다가 이 게시물을 보면서

다시 한번 맘 가짐을 고치기 위해 보관 중입니다.

Sencha touch 를 공부 하시는 분들 이 게시물은

초보적인 도움뿐이 안됩니다.

다른 게시물을 이용하기 바랍니다.



하이브리드 앱을 만들기 위해서 이것 저것 기웃 거리다 Sencha Touch 2.0.1 을 이용해 보기로 했다.


1. 로그인창 만들기

로그인창은 즐겨찾기 등에 대한 정보를 개인 모바일 기기가 아닌 서버에 저장하고

다른 모바일 기기에서도 굳이 새로 등록 하는게 아니라 ID / PW 를 이용하여 동일하게

적용하기 위함.


목표 : 1. E-mail / Password 입력 받기

2. Button 클릭으로 localStorage에 저장해서 다음에 재 사용하기...


우선 기본적인 개발 환경이 준비 되었다고 가정하고 시작함.


Sencha 는 나름 MVC 모델을 이용하여 프로그램을 할 수 있음.

MVC 모델에 자세한 사항은 네이버 검색을 이용하면 됨.


위 목표를 완료 하기 위해서는 우선

HTML 페이지를 하나 만들어 야 한다.


파일명 : index.html

<html>

<head>

<meta charset="utf-8">


<!-- Sencha Touch CSS -->

<link rel="stylesheet" href="./css/sencha-touch.css" type="text/css"> <!-- Sencha Touch 에 사용되는 CSS 파일 -->


<!-- Sencha Touch JS -->

<script type="text/javascript" src="./js/sencha-touch-all-debug.js"></script><!-- Sencha Touch 에 Import -->


<!-- Application JS -->

<script type="text/javascript" src="./js/app.js"></script> <!-- Sencha Touch 의 Application -->

<script type="text/javascript" src="http://apis.daum.net/maps/maps3.js?apikey=다음지도API 키"></script>

<!-- 다음 지도 api 를 import 하기 위한 구문이며 apikey 는 다음 개발자 사이트에서 신청해서 사용함 -->

</head>

<body></body>

</html>


위 소스가 HTML 소스의 전부 이다.


그리고 application Script 파일을 작성해야 함.


파일명 : app.js


Ext.application({

name: 'Nubija', <!-- 봐서 알겠지만 최종목표는 다음지도를 이용한 누비자 터미널 정보를 보는것이다. -->

appFolder: './js/app',

<!-- Html 파일이 있는 홈의 하위 폴더 인 "./js/app" 하위에 view / controller / model 폴더가 존재 해야 함. -->

views: ['LoginView'],

<!-- Sencha Touch 의 View 파일 설정함 -->

controllers: ['LoginController'],

<!-- Sencha Touch 의 Controller 파일 설정함 -->


launch: function() { <!-- launch 는 페이지가 모두 로딩되고 application 이 실행되면서 { .. } 안에 문장 수행 -->

Ext.create('LoginView'); <!-- Ext.create 명령을 이용하여 View 생성 -->

}

});


이제 View Script 를 작성한다.

파일명 : LoginView.js


Ext.define('Nubija.view.LoginView', {
extend: 'Ext.Panel',
alias: 'LoginView',
config : {
fullscreen : true,
layout : 'vbox',
items : [
{ <!-- fieldset 시작 -->
<!-- fieldset을 사용하면 하위 componet ( ex : emailfield / passwordfield ) 에 id 를 부여 할 수 없었다.
할수 있는 방법이 있는데 내가 모르는 것일 수도 있지만, 하여간 몇일 고민했는데 찾을 수 없었다.
id 를 부여 할 수 없으면 Controller 에서 값을 읽을 방법을 몰라 한참을 해메다가 ...
그냥 꼼수를 부려서 처리 했다.

그 꼼수는 controller 에서 확인 하면 됨.

-->
xtype : 'fieldset',
title : '개인 식별을 정보 입력',
items : [
{
xtype : 'emailfield', <!-- Email 형식의 Text 박스 정의 -->
label : '이메일',
name : 'email',
placeHolder:'이메일을 입력하세요.',
required:true
},
{
xtype : 'passwordfield', <!-- Password 형식의 Text 박스 정의 -->
label : '암호',
name : 'password',
placeHolder:'암호를 입력하세요.',
required:true
},
{
xtype : 'label',
html : '<FONT SIZE = 1>* 이 정보는 개인 구분을 위해서만 사용됩니다.</font>'
}
]
},<!-- fieldset 끝 -->
{<!-- toolbar 시작 -->
xtype: 'toolbar',
docked: 'bottom',
ui: 'light',
defaults: {
iconMask: true
},
items: [
{ xtype: 'spacer' }, <!-- toolbar에 왼쪽 공간 공백 -->
{ iconCls: 'action', <!-- 버튼 추가 -->
title: '완료',
id:'LoginButton'},<!-- 버튼 id 는 controller 에서 Event 처리 등에 사용한다. -->
{ xtype: 'spacer' }<!-- toolbar에 오른쪽 공간 공백 -->
]
}<!-- toolbar 끝 -->
]
}
});

이제 마지막으로 가장 중요한 Controller 이다.

파일명 : LoginController.js


Ext.define('Nubija.controller.LoginController', {
extend: 'Ext.app.Controller',
alias: 'LoginController',
config :{
refs : {
LoginButton:'#LoginButton' <!-- view 에서 정의한 버튼 id 를 참조하고 -->
},
control : {
LoginButton :{
tap : 'onLoginButton' <!-- 버튼이 눌러졌을때 수행할 function 를 정의 한다. -->
}
}
},
onLoginButton:function() {
var email = Ext.get("ext-element-12").getValue(); <!-- 이부분이 정말 꼼수다. -->
<!-- Sencha Touch 에서 Ext.get("id").getValue() 이렇게 해서 해당 id 의 값을 가져 올수 있다.
그런데 filedset 의 하위 component 는 id 를 부여 할 수 없었다.
그래서....
그 방법은 밑에서 자세히 ID 아아 내는 방법을 표시 함.
-->
var pw = Ext.get("ext-element-18").getValue();
console.log("LoginButton Click !! - " + email + ", " + pw );
localStorage.setItem('email', email ); <!-- HTML5 에서 추가된 localStorage 명령을 이용하여 Local 에 저장함-->
localStorage.setItem('password', pw );
},
init:function() {
this.callParent();
console.log("init LoginController : " + localStorage.getItem('email'));
}
});

끝. 일단 여기 까지 하면 대강 로그인 창을 만들수 있다.


담에는 다음 지도를 화면에 표시 하는 방법에 대해서 해야 겠다.


PS : 위에서 언급한 꼼수...


위 프로그램을 실행 하고 크롬의 개발자 도구를 이용하여 Element 기능을 이용하여 ID 를 찾았다.

소스가 바뀌지 않는 이용 Sencha touch 에서 자동 생성하는 id 값은 변경 되지 않는다. 아마도...




Posted by 1010