SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Downloaden Sie, um offline zu lesen
tips & tricks
Backbone.js
dasolute.com
신대현
@dahinir
백수
Alloy X Backbone
Vesion
Backbone 최신 1.1.2
Alloy 사용 버젼 0.9.2
http://docs.appcelerator.com/backbone/0.9.2/
앱 설정값을 backbone.js 로 저장 해
보자!
전역적으로 사용될 설정값들. 예를 들어
run_count
theme
active_tab
..
저장된 앱 셋팅을 불러오자
// 아마도 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..
};
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') );
이렇게 쓰고 싶어
var settings = Alloy.createModel('settings');
// 저장된 앱 설정값을 불러온다.
settings.fetch();
.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
안되네?
아 맞다 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'
model.id
vs
model.set('id')
with idAttribute
먼저 model.attributes
var settings = Alloy.createModel('settings');
settings.set('run_count', 3);
settings.attributes.run_count; //3
settings.get('run_count'); // 3
일반적으로 쓰이는 모델 변수들은 실제로 model.attributes 에 저장됨
하지만 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
id
동작은 model.id 기반으로 함
id는 일반 변수 중 하나로 지정되서 사용됨
햇갈? .idAttribute 기본값이 'id' 라서 햇갈햇반
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로 사용할 변수의 이름을 지정
아까 그거
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'
우아하게 쓰려면..
var settings = Alloy.Models.instance('settings');
settings.save('theme', 'green');
var settings = Alloy.Models.instance('settings');
settings.fetch();
settings.get('theme'); // 'green'
모델 정의에서 해결
config: {
adapter: {
type: "properties"
}
},
extendModel: function(Model) {
_.extend(Model.prototype, {
id: "WHAT_EVER_YOU_WANT"
});
return Model;
}
되진 되지만..
var settings = Alloy.Models.instance('settings');
settings.fetch();
settings.id; // WHAT_EVER_YOU_WANT
settings.get('id') // undefined
.attributes에 셋팅되야 할것은
.defaults에
config: { .. },
extendModel: function(Model) {
_.extend(Model.prototype, {
defaults: {
id: "WHAT_EVER_YOU_WANT"
}
});
return Model;
}
appcelerator문서에는 defaults를 config안에 넣으라 되있지만..
type: "properties" 일 때..
// config :Alloy가 다루는 백본 설정
config: {
defaults: {
theme: "blue" // 안돼요!
},
adapter: {
type: "properties", // not "sql"
collection_name: "settings",
idAttribute: "_id" // 안돼요!!
}
},
extendModel: function(Model) {
_.extend(Model.prototype, {
idAttribute: "_id", // 여기!!
id: "WHAT_EVER_YOU_WANT", // 굳이쓴다면.. not _id
defaults: { // attributes의 기본값
_id: "WHAT_EVER_YOU_WANT",
theme: "blue" // 여기!!
}
});
return Model;
}
type: "properties" 결론
Alloy보단 Backbone을 믿는게..
-
내가 사용할 모델 프로퍼티와 id는 .get()과 .set()을 사용한다.
이것들은 model.attributes에 저장된다.
이것들의 기본값은 model.defaults 객체에 선언한다.
-
id를 제외한 특수 목적의 백본 변수 기본값은 Model.prototype에 직접
id는 model.id에도 저장되고 model.attributes.id에도 저장되서 햇반
model.cid 는 또 뭐야
백본이 알아서 생성하는 아이디
클라이언트에서만 유일한 값
같은 인스턴스인지 체크할때 유용
model.defaults에 객체를 넣으려면
// photo model
defaults: {
url: "/photo/defaults.png",
owner: {
name: "Me",
age: -1
}
}
?!!
var myPhoto1 = Alloy.createModel('photo');
var myPhoto2 = Alloy.createModel('photo');
myPhoto1.get('owner').age; // -1
myPhoto2.get('owner').age; // -1
myPhoto2.get('owner').age = 22;
myPhoto1.get('owner').age; // 22
myPhoto2.get('owner').age; // 22
in JavaScript, objects are passed by reference
define defaults as a function
// photo model
defaults: function(){
return {
url: "/photo/defaults.png",
owner: {
name: "Me",
age: -1
}
};
}
tutorials
http://backbonejs.org
http://backbonetutorials.com
http://addyosmani.github.io/backbone-fundamentals/
Keep Your Models Fat!
Code Strong!

Weitere ähnliche Inhalte

Andere mochten auch

Presentation-Cukur361-Gemastik8
Presentation-Cukur361-Gemastik8Presentation-Cukur361-Gemastik8
Presentation-Cukur361-Gemastik8Cheppy Yovembra
 
Persuasive argument
Persuasive argumentPersuasive argument
Persuasive argumentschoenacli
 
Building native mobile apps using web technologies
Building native mobile apps using web technologiesBuilding native mobile apps using web technologies
Building native mobile apps using web technologiesHjörtur Hilmarsson
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksHjörtur Hilmarsson
 

Andere mochten auch (6)

Firewall
FirewallFirewall
Firewall
 
Pmbok
PmbokPmbok
Pmbok
 
Presentation-Cukur361-Gemastik8
Presentation-Cukur361-Gemastik8Presentation-Cukur361-Gemastik8
Presentation-Cukur361-Gemastik8
 
Persuasive argument
Persuasive argumentPersuasive argument
Persuasive argument
 
Building native mobile apps using web technologies
Building native mobile apps using web technologiesBuilding native mobile apps using web technologies
Building native mobile apps using web technologies
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
 

Ähnlich wie Backbone.js :tips & tricks

Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축JoongSeob Kim
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJung Han
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
E government framework
E government frameworkE government framework
E government frameworkHyungKuIm
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629Dosang Yoon
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Jay Park
 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2Yunho Jo
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&httpDong Jun Kwon
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용SK Telecom
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Choonghyun Yang
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamentalJeongHun Byeon
 
02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)Hankyo
 

Ähnlich wie Backbone.js :tips & tricks (20)

Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축
 
Nodejs express
Nodejs expressNodejs express
Nodejs express
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
Jstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNGJstl_GETCHA_HANJUNG
Jstl_GETCHA_HANJUNG
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
E government framework
E government frameworkE government framework
E government framework
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
Apache solr소개 20120629
Apache solr소개 20120629Apache solr소개 20120629
Apache solr소개 20120629
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
 
Xe hack
Xe hackXe hack
Xe hack
 
Rails style-guide-2
Rails style-guide-2Rails style-guide-2
Rails style-guide-2
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&http
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamental
 
02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)02.실행환경 실습교재(데이터처리)
02.실행환경 실습교재(데이터처리)
 

Kürzlich hochgeladen

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 

Kürzlich hochgeladen (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 

Backbone.js :tips & tricks

  • 4. Vesion Backbone 최신 1.1.2 Alloy 사용 버젼 0.9.2 http://docs.appcelerator.com/backbone/0.9.2/
  • 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로 사용할 변수의 이름을 지정
  • 16. 아까 그거 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'
  • 17. 우아하게 쓰려면.. var settings = Alloy.Models.instance('settings'); settings.save('theme', 'green'); var settings = Alloy.Models.instance('settings'); settings.fetch(); settings.get('theme'); // 'green'
  • 18. 모델 정의에서 해결 config: { adapter: { type: "properties" } }, extendModel: function(Model) { _.extend(Model.prototype, { id: "WHAT_EVER_YOU_WANT" }); return Model; }
  • 19. 되진 되지만.. var settings = Alloy.Models.instance('settings'); settings.fetch(); settings.id; // WHAT_EVER_YOU_WANT settings.get('id') // undefined
  • 20. .attributes에 셋팅되야 할것은 .defaults에 config: { .. }, extendModel: function(Model) { _.extend(Model.prototype, { defaults: { id: "WHAT_EVER_YOU_WANT" } }); return Model; } appcelerator문서에는 defaults를 config안에 넣으라 되있지만..
  • 21. type: "properties" 일 때.. // config :Alloy가 다루는 백본 설정 config: { defaults: { theme: "blue" // 안돼요! }, adapter: { type: "properties", // not "sql" collection_name: "settings", idAttribute: "_id" // 안돼요!! } }, extendModel: function(Model) { _.extend(Model.prototype, { idAttribute: "_id", // 여기!! id: "WHAT_EVER_YOU_WANT", // 굳이쓴다면.. not _id defaults: { // attributes의 기본값 _id: "WHAT_EVER_YOU_WANT", theme: "blue" // 여기!! } }); return Model; }
  • 22. type: "properties" 결론 Alloy보단 Backbone을 믿는게.. - 내가 사용할 모델 프로퍼티와 id는 .get()과 .set()을 사용한다. 이것들은 model.attributes에 저장된다. 이것들의 기본값은 model.defaults 객체에 선언한다. - id를 제외한 특수 목적의 백본 변수 기본값은 Model.prototype에 직접 id는 model.id에도 저장되고 model.attributes.id에도 저장되서 햇반
  • 23. model.cid 는 또 뭐야 백본이 알아서 생성하는 아이디 클라이언트에서만 유일한 값 같은 인스턴스인지 체크할때 유용
  • 24. model.defaults에 객체를 넣으려면 // photo model defaults: { url: "/photo/defaults.png", owner: { name: "Me", age: -1 } }
  • 25. ?!! var myPhoto1 = Alloy.createModel('photo'); var myPhoto2 = Alloy.createModel('photo'); myPhoto1.get('owner').age; // -1 myPhoto2.get('owner').age; // -1 myPhoto2.get('owner').age = 22; myPhoto1.get('owner').age; // 22 myPhoto2.get('owner').age; // 22 in JavaScript, objects are passed by reference
  • 26. define defaults as a function // photo model defaults: function(){ return { url: "/photo/defaults.png", owner: { name: "Me", age: -1 } }; }
  • 28. Keep Your Models Fat! Code Strong!