๋๋ ์ด๊ฒ์ ๋ง์ด ํ์๋ก ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ ์ ์ด๊ฒ์ด ํ๋ ์์ํฌ์ ์ถ๊ฐ๋์ง ์์ ์ด์ ๊ฐ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๋๋ ์ฌ์ฉ ์ฌ๋ก๊ฐ ํ๋ถํ๊ณ ๋ถ๋ช ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. Ember.Object๋ ์ผ๋ฐ ๊ฐ์ฒด์ ๋ง์ ๋ฉํ๋ฐ์ดํฐ์ ์ถ๊ฐ ์์ฑ์ ์ถ๊ฐํ๋ฏ๋ก ๊ฐ์ฒด์ ์์ฑ์ ๋ฐ๋ณตํ๋ ์ผ๋ฐ ํจ์๋ก ๊ฐ์ฒด์ ๋ํด ์์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์์ฑ์ด ์ค์ ๋ก ๋ฐฉํด๊ฐ ๋ฉ๋๋ค.
ํ๋ ์์ํฌ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๊ฒ ๊ฐ์์. ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฌํ ํ์์ฑ์ ๋ฐ๊ฒฌํ ์ ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฒด ์ง๋ ฌํ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์๋ ์ ์ผํ ์๊ฐ์ด๊ณ ember-data๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ทธ ํ์์ฑ์ ๊ด๋ จ์ด ์์ต๋๋ค.
์ฆ, ์ด ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ Ember.ObjectProxy
๋ฅผ ์ฌ์ฉํ์ฌ ์์ํ๊ณ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ๋ฉ๋ฆฌ ์๋์ง ํ์ธํฉ๋๋ค. ๋ค์์ ์์
๋๋ค. http://emberjs.jsbin.com/kapenomivu/1/edit?js ,์ถ๋ ฅ
๊ฐ์ฒด์ ์์ฑ์ ๋ฐ๋ณตํ๋ ์ผ๋ฐ ํจ์
์ด๊ฒ์ด hasOwnProperty
์ฉ๋์
๋๋ค.
์์ ๋กญ๊ฒ Ember.keys
Object.keys
Ember.keys(Ember.Object.create({ foo: 1 }))
> [ 'foo' ]
์ฆ, ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ Ember.ObjectProxy๋ฅผ ์ฌ์ฉํ์ฌ ์์ํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ผ๋ง๋ ๋์๋์ง ํ์ธํฉ๋๋ค. ๋ค์์ ์์ ๋๋ค. http://emberjs.jsbin.com/kapenomivu/1/edit?js ,์ถ๋ ฅ
pojo
์ง์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
@stefanpenner ๋๋ ๊ทธ๊ฒ์ด ์ ๋ง๋ก OP์ ๋ํ ์ง๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๊ฐ ์์ฑ/ํจ์/๊ด์ฐฐ์/๋ฑ์ ๊ณ์ฐํ ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ์์๋ ๊ฒ ๊ฐ๋ค. ๋๋ Ember.keys
๋ฐ๋ณตํ๋ ๊ฒ์ ๊ณ ๋ คํ์ง ์์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ ์์
์ ๋ด์ฉ์ด ํฌํจ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง (๋น์์๋ ๋งน์ธํฉ๋๋ค), ๊ทธ๋ ์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์ฆ๊ฒ๊ฒ ๋๋์ต๋๋ค.
ํธ๊ธฐ์ฌ์์ Ember.ObjectProxy
์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
ํธ์ง : ๋ช
ํํํ๊ธฐ ์ํด Ember.keys
์๋ฃจ์
์ด ํจ์ฌ ๊นจ๋ํ๊ณ ๋ด ํฌํ๋ฅผ ์ป์ต๋๋ค. ObjectProxy
๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ๋ถ์ ์ ์ธ ์๊ฐ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
ember ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ ์๋ "ํด์" ๊ตฌ์กฐ๋ฅผ ์ถ์ถํ๋ ๋ช ๊ฐ์ง ์ ๋ต์ด ์์ต๋๋ค(์์ ๋ ๊ฐ์ด ์๋ ์๋ ). ์ ์ง๋ฌธ์ ๋๋ถ๋ถ ์ผ๋ฐ์ ์ธ Ember.js ์ปค๋ฎค๋ํฐ์์ ์ด๊ฒ์ ํ์๋ก ํ๋ ๋น๋์ ๊ดํ ๊ฒ์ด์์ต๋๋ค. .nativeCopy
๋ฉ์๋๋ Ember.Object
์ ์ ๋ง ์ข์ ๊ฒ์ด์ง๋ง API ์ถ๊ฐ์ ๋ํด ๊ทน๋๋ก ์ ํ์ ์ธ ํ์์ฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์์
์ ๋ ํธ๋ฆฌํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ถ๊ฐํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ๋๋ ์๊ณ ๊ทธ๋ ์ง ์์ ๋๋ ์์ต๋๋ค. ๋๋ ์ฌ๋๋ค์ด ๋๋งํผ ์์ฃผ ์ด ํ์์ฑ์ ์ง๋ฉดํ์ง ์๋๋ค๋ ๋๋์ ๋ฐ์ต๋๋ค.
ํ ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ์๊ฐ ๊ถ๊ธํ์๋ค๋ฉด Ember.Object
๋ฅผ ์ฌ์ฉํ์ฌ "์๋ก ๋ง๋ค๊ธฐ [โฆ]" ์์์ ์ง์ํ๋ ๊ฒ์
๋๋ค. ์๋ง๋ ์์ฑ ์์์ ํญ๋ชฉ ๋ชฉ๋ก ๋ฐ๋ก ์๋์ ์์ ๊ฒ์
๋๋ค. this.store.createRecord
๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ท๋ฐ์นจํ๋ ๋น ๋ชจ๋ธ์ ์์ฑํ๋ฉด ์ฆ์ ์ ๋ชฉ๋ก์ ์ ํญ๋ชฉ์ด ์ถ๊ฐ๋๊ณ ์์์ ์์ฑํ ๋ ๊ฐ์ด ์ฑ์์ง๋๋ค. ์ด๋ฅผ ํผํ๊ธฐ ์ํด Ember.Object
๋ฅผ ์์ฑํ์ฌ ์์์ ๋ท๋ฐ์นจํ ์ ์์ง๋ง createRecord
์ ์ ๋ฌํ๊ธฐ ์ํด ๊ฐ์ ํ๋์ฉ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
๋ด๊ฐ ์ด ์์
์ ๋ง์ด ํ๋ ๋ง์ง๋ง ์ด์ ์ค ํ๋๋ Ember.Copyable
๊ตฌํํ๋ ๊ฒ์ด ๋๋ฌด ๊ณ ํต์ค๋ฝ๊ธฐ ๋๋ฌธ์ ๊น์ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๋๋ Ember.Copyable
์ ๋์์ธ์ ์ข์ํ์ง๋ง ์ ์์ ์ธ ๊ธฐ๋ณธ/์ผ๋ฐ ๊ตฌํ์ ์ ๋ง ์ ๋ง ์ข์ ๊ฒ์
๋๋ค.
pojo๊ฐ ํ์ํ ๊ฐ์ฅ ํฐ ์ด์ ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์ ๋๋ฌธ์ ๋๋ค. Datatables, jstree ๋ฑ์ ๋ชจ๋ ํ๋ฒํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ํ๋ฉฐ ember ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํญ๋ฐํ ๊ฒ์ ๋๋ค.
@ccarterc ์ ๊ฐ์ ์: localforage.setItem - Ember.Object๊ฐ ์๋ PITA์
๋๋ค.
์ค๋ ๊ทธ๊ฒ์ ์ง๋ฉดํ๊ณ ๋ง์ถคํ "ํ์ถ๊ธฐ"๋ฅผ ๋ฃ์ด์ผ ํ์ต๋๋ค.
์ค๋ ์ด ์ ํํ ํ์์ ๋ถ๋ช์ณค์ต๋๋ค. @ccarterc๊ฐ ๋งํ๋ฏ์ด ์ด๊ฒ์ POJO๋ฅผ ๊ธฐ๋ํ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค์ํฉ๋๋ค. ์ด ์์ ์ ์ํํ๋ "๊ณต์์ ์ธ" ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
POJO๋ก ์์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ํ๋ฏ๋ก ๋ด ๊ฐ์ฒด๋ฅผ ํ์ฌ ๋ฐ๋๋ผ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
๋ค, ์ 3์ API๋ฅผ ์ํด ์ง๊ธ ์ด ๋ฌธ์ ๋ก ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค. ํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฝ 70๊ฐ ํ๋์ ๋ฐฐ์ด์ด ์๋ ๊ฐ์ฒด์ ๋ํด getProperties
๋ฅผ ์ํํ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์ด๋ฆฌ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ ๊ทธ๋ ๊ฒํ๋ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค ...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
pojo๊ฐ ํ์ํ ๊ฐ์ฅ ํฐ ์ด์ ๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์ ๋๋ฌธ์ ๋๋ค. Datatables, jstree ๋ฑ์ ๋ชจ๋ ํ๋ฒํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด๊ณผ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ํ๋ฉฐ ember ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํญ๋ฐํ ๊ฒ์ ๋๋ค.