5. 앱 설정값을 backbone.js 로 저장 해
보자!
전역적으로 사용될 설정값들. 예를 들어
run_count
theme
active_tab
..
6. 저장된 앱 셋팅을 불러오자
// 아마도 alloy.js(앱 시작)에 쓰일 코드
// 저장된 앱 설정값을 불러온다.
Alloy.Globals.settings = {
run_count: Ti.App.Properties.getString("run_count"),
theme: Ti.App.Properties.getString("theme"),
active_tab: Ti.App.Properties.getString("active_tab")
// etcs..
};
7. Backbone.model 을 쓰자
var settings = Alloy.createModel('settings');
// 저장된 앱 설정값을 불러온다.
settings.set({
run_count: Ti.App.Properties.getString("run_count"),
theme: Ti.App.Properties.getString("theme"),
active_tab: Ti.App.Properties.getString("active_tab")
});
// 이제 settings를 쓸 수 있다!
myTabGroup.setActiveTab( settings.get('active_tab') );
8. 이렇게 쓰고 싶어
var settings = Alloy.createModel('settings');
// 저장된 앱 설정값을 불러온다.
settings.fetch();
9. .save() 했던걸 .fetch() 했더니..
// 싱글톤으로 생성
var settings = Alloy.Models.instance('settings');
settings.save('theme', 'green');
// 앱이 종료 된것 처럼 완전 삭제
settings.clear();
delete settings;
// 재시작 된 것 처럼 처음부터 다시
var settings = Alloy.Models.instance('settings');
settings.fetch();
settings.get('theme'); // undefined
안되네?
10. 아 맞다 id
같은 id를 지정해야 같은걸 넣고 뺀다.
var settings = Alloy.Models.instance('settings');
// 아이디를 뭘로 하든 같은것만 쓰면 된다
settings.id = "WHAT_EVER_YOU_WANT";
settings.save('theme', 'green');
var settings = Alloy.Models.instance('settings');
settings.id = "WHAT_EVER_YOU_WANT";
settings.fetch();
settings.get('theme'); // 'green'
12. 먼저 model.attributes
var settings = Alloy.createModel('settings');
settings.set('run_count', 3);
settings.attributes.run_count; //3
settings.get('run_count'); // 3
일반적으로 쓰이는 모델 변수들은 실제로 model.attributes 에 저장됨
13. 하지만 id 는 특별한 property
각 모델의 identity를 결정하는 meta data
하지만 model.attributes 에도 저장됨
settings.set('id', 'WHAT_EVER_YOU_WANT');
settings.id; // WHAT_EVER_YOU_WANT
settings.get('id'); // WHAT_EVER_YOU_WANT
settings.id = 'WHAT_EVER_YOU_WANT';
settings.id; // WHAT_EVER_YOU_WANT
settings.get('id'); // undefined
14. id
동작은 model.id 기반으로 함
id는 일반 변수 중 하나로 지정되서 사용됨
햇갈? .idAttribute 기본값이 'id' 라서 햇갈햇반
15. model.idAttribute = _id;
settings.idAttribute = "_id";
settings.set('_id') = "WHAT_EVER_YOU_WANT";
settings.id; // 그래도 이건 아이디(변수 자체가 Backbone이 지정)
settings._id; // undefined
settings.attributes._id; // 이게 아이디로 사용
settings.get('_id'); // 이것도
settings.get('id'); // undefined
.idAttribute는 .attributes의 변수중 id로 사용할 변수의 이름을 지정
22. type: "properties" 결론
Alloy보단 Backbone을 믿는게..
-
내가 사용할 모델 프로퍼티와 id는 .get()과 .set()을 사용한다.
이것들은 model.attributes에 저장된다.
이것들의 기본값은 model.defaults 객체에 선언한다.
-
id를 제외한 특수 목적의 백본 변수 기본값은 Model.prototype에 직접
id는 model.id에도 저장되고 model.attributes.id에도 저장되서 햇반
23. model.cid 는 또 뭐야
백본이 알아서 생성하는 아이디
클라이언트에서만 유일한 값
같은 인스턴스인지 체크할때 유용