νμΈλ λͺ©λ‘μΌλ‘ λ λλ§νλ true / false / undefined κ°μ λ°°μ΄μ΄ μμ΅λλ€.
λ°°μ΄ μμλ₯Ό trueλ‘ λλ trueμμ λ³κ²½ν λ νμΈλ λͺ©λ‘μ λ³κ²½λ νμΈλκ³Ό ν¨κ» λ³κ²½ μ¬νμ μμνλ λ€μ (index + 1) νμΈλμΌλ‘ λ€μ λ λλ§λ©λλ€.
μνΈ:
{{#each range as |value idx|}}
<label><input type="checkbox" checked={{value}} {{action makeChange idx on="change"}}>{{idx}}: {{value}}</label><br/>
{{/each}}
{{#each range key="@index" as |value idx|}}
νλ©΄ μ λλ‘ μλν©λλ€.
νΈμλ€ : https://ember-twiddle.com/6d63548f35f99da19cee9f58fb64db59
@andrewtimberlake λ {{#each range key="@index" as |value idx|}}
νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νλ κ² κ°μ΅λλ€.
κ·Έλ¬λ λ²κ·Έμ²λΌ 보μ΄μ§λ§ key
λ λ€λ₯Έ λͺ©μ μμν κ²μ
λλ€. https://www.emberjs.com/api/ember/release/classes/Ember.Templates.helpers/methods/if?anchor= λ§λ€
λλ μ¬κΈ°μ λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ μκ³ μλ€κ³ μκ°ν©λλ€. μλ§μ΄μ§λ§ μ€λͺ νλ €κ³ λ Έλ ₯ν κ²μ λλ€. λ§μ μ£μ§ μΌμ΄μ€ (ν λ리 λΌμΈ μ¬μ©μ μ€λ₯)κ°μ΄ λ¬Έμ μ κΈ°μ¬νμΌλ©° λ²κ·Έκ° 무μμΈμ§, λ²κ·Έκ° μλμ§, 무μμ μ΄λ»κ² μμ ν΄μΌνλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
λ¨Όμ {{#each}}
μμ key
λ§€κ° λ³μκ° μννλ μμ
μ μ€λͺ
ν΄μΌν©λλ€. μμ½νμλ©΄, DOMμ μ²μλΆν° λ§λλ κ²μ΄ μλλΌ κΈ°μ‘΄ DOMμ μ¬μ¬μ©νλ κ²μ΄ ν©λ¦¬μ μΌμ§ μ¬λΆμμκΈ°λ₯Ό κ²°μ νλ €κ³ ν©λλ€.
μ°λ¦¬μ λͺ©μ μ μν΄ "DOM ν°μΉ"(μ : ν μ€νΈ λ Έλ, μμ±μ λ΄μ© μ λ°μ΄νΈ, λ΄μ© μΆκ° λλ μ κ±° λ±)λ λΉμ©μ΄ λ§μ΄ λ€κ³ κ°λ₯ν ν νΌν΄μΌνλ€λ μ μ λ°μ λ€μ¬ λ΄ μλ€.
λ€μ κ°λ¨ν ν νλ¦Ώμ μ§μ€ ν΄ λ³΄κ² μ΅λλ€.
<ul>
{{#each this.names as |name|}}
<li>{{name.first}} {{to-upper-case name.last}}</li>
{{/each}}
</ul>
this.names
κ° ...
[
{ first: "Yehuda", last: "Katz" },
{ first: "Tom", last: "Dale" },
{ first: "Godfrey", last: "Chan" }
]
κ·ΈλΌ λΉμ μ μ»μ κ²μ λλ€ ...
<ul>
<li>Yehuda KATZ</li>
<li>Tom DALE</li>
<li>Godfrey CHAN</li>
</ul>
μ¬νκΉμ§λ κ·Έλ°λλ‘ μλλ€.
μ΄μ λͺ©λ‘μ { first: "Andrew", last: "Timberlake" }
λ₯Ό μΆκ°νλ©΄ μ΄λ¨κΉμ? ν
νλ¦Ώμ΄ λ€μ DOMμ μμ± ν κ²μΌλ‘ μμν©λλ€.
<ul>
<li>Yehuda KATZ</li>
<li>Tom DALE</li>
<li>Godfrey CHAN</li>
<li>Andrew TIMBERLAKE</li>
</ul>
νμ§λ§ _how_?
{{#each}}
λμ°λ―Έλ₯Ό ꡬννλ κ°μ₯ μμ§ν λ°©λ²μ λͺ©λ‘μ λ΄μ©μ΄ λ³κ²½ λ λλ§λ€ λͺ©λ‘μ λͺ¨λ λ΄μ©μ μ§μ°λ κ²μ
λλ€. μ΄λ κ²νλ €λ©΄ _ μ΅μν _ 23 κ°μ μμ
μ μνν΄μΌν©λλ€.
<li>
λ
Έλ 3 κ° μ κ±°<li>
λ
Έλ 4 κ° μ½μ
to-upper-case
λμ°λ―Έλ₯Ό 4 λ² νΈμΆν©λλ€.μ΄κ²μ ... λ§€μ° λΆνμνκ³ λΉμΈ 보μ λλ€. μ²μ μΈ νλͺ©μ λ³κ²½λμ§ μμμΌλ―λ‘ ν΄λΉ νμ λν μμ μ 건λ λΈ μ μμΌλ©΄ μ’μ κ²μ λλ€.
λ λμ ꡬνμ κΈ°μ‘΄ νμ μ¬μ¬μ©νκ³ λΆνμν μ
λ°μ΄νΈλ₯Ό μννμ§ μλ κ²μ
λλ€. ν κ°μ§ μμ΄λμ΄λ λ¨μν νμ ν
νλ¦Ώμ μμΉμ μΌμΉμν€λ κ²μ
λλ€. μ΄κ²μ λ³Έμ§μ μΌλ‘ key="@index"
μν μ
λλ€.
{ first: "Yehuda", last: "Katz" }
μ 첫 λ²μ§Έ ν <li>Yehuda KATZ</li>
:to-upper-case
ν¬νΌλ₯Ό λ€μ νΈμΆ ν νμκ° μμμ μκ³ μμΌλ―λ‘ ν΄λΉ ν¬νΌμ μΆλ ₯μ μκ³ μμ΅λλ€ ( "KATZ" ) _also_ λ³κ²½λμ§ μμμΌλ―λ‘ μ¬κΈ°μ ν μΌμ΄ μμ΅λλ€.<li>
λ
Έλ μ½μ
to-upper-case
λμ°λ―Έ νΈμΆ ( "Timberlake"-> "TIMBERLAKE")λ°λΌμμ΄ κ΅¬νμ ν΅ν΄ μ΄ μμ μλ₯Ό 23 κ°μμ 5 κ°λ‘ μ€μμ΅λλ€. λμμ§ μλ€.
νμ§λ§ μ΄μ λͺ©λ‘μ _appending_ { first: "Andrew", last: "Timberlake" }
λμ _prepended_νλ©΄ μ΄λ»κ² λ κΉμ? ν
νλ¦Ώμ΄ λ€μ DOMμ μμ± ν κ²μΌλ‘ μμν©λλ€.
<ul>
<li>Andrew TIMBERLAKE</li>
<li>Yehuda KATZ</li>
<li>Tom DALE</li>
<li>Godfrey CHAN</li>
</ul>
νμ§λ§ _how_?
{ first: "Andrew", last: "Timberlake" }
λ₯Ό 첫 λ²μ§Έ ν <li>Yehuda KATZ</li>
.to-upper-case
λμ°λ―Έ λ€μ νΈμΆ{ first: "Yehuda", last: "Katz" }
λ₯Ό λ λ²μ§Έ ν <li>Tom DALE</li>
, λ€λ₯Έ 3 κ° μμ
κ³Ό λΉκ΅ν©λλ€.{ first: "Tom", last: "Dale" }
λ₯Ό λ λ²μ§Έ ν <li>Godfrey CHAN</li>
, λ€λ₯Έ 3 κ° μμ
κ³Ό λΉκ΅ν©λλ€.<li>
λ
Έλ μ½μ
to-upper-case
λμ°λ―Έ νΈμΆ ( "Chan"-> "CHAN")κ·Έκ²μ 14 κ°μ μμ μ λλ€. μμΌ!
κ°λ μ μΌλ‘ μ°λ¦¬κ° μ λλ μΆκ°νλ , μ°λ¦¬λ μ¬μ ν λ°°μ΄μ λ¨μΌ κ°μ²΄ λ§ λ³κ²½ (μ½μ )νκ³ μκΈ° λλ¬Έμ λΆνμ ν΄ λ³΄μμ΅λλ€. μ΅μ μΌλ‘, μ°λ¦¬λ μΆκ° μλ리μ€μμνλ κ²μ²λΌμ΄ μΌμ΄μ€λ₯Ό μ²λ¦¬ ν μ ββμμ΄μΌν©λλ€.
μ¬κΈ°μ key="@identity"
κ° λ€μ΄μ΅λλ€. λ°°μ΄μμλ μμμ _order_μ μμ‘΄νλ λμ JavaScript κ°μ²΄ ID ( ===
)λ₯Ό μ¬μ©ν©λλ€.
{ first: "Andrew", last: "Timberlake" }
μ μΌμΉνλ ( ===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. μ무κ²λ λ°κ²¬λμ§ μμμΌλ―λ‘ μ νμ μ½μ
(μμ μΆκ°)ν©λλ€.<li>
λ
Έλ μ½μ
to-upper-case
λμ°λ―Έ νΈμΆ ( "Timberlake"-> "TIMBERLAKE"){ first: "Yehuda", last: "Katz" }
μ μΌμΉνλ ( ===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. <li>Yehuda KATZ</li>
λ°κ²¬ :to-upper-case
ν¬νΌλ₯Ό λ€μ νΈμΆ ν νμκ° μμμ μκ³ μμΌλ―λ‘ ν΄λΉ ν¬νΌμ μΆλ ₯μ μκ³ μμ΅λλ€ ( "KATZ" ) _also_ λ³κ²½λμ§ μμμΌλ―λ‘ μ¬κΈ°μ ν μΌμ΄ μμ΅λλ€.μ΄λ₯Ό ν΅ν΄ μ΅μ μ 5 κ°μ§ μμ μΌλ‘ λμκ°λλ€.
λ€μ λ§νμ§λ§ μ΄κ²μ λΉκ΅μ λΆκΈ° λΉμ©μ μμ νλλ κ²μ λλ€. μ¬μ€, κ·Έκ²λ€λ 무λ£κ° μλλ©°,μ΄ μμ£Ό κ°λ¨ν μμμλ κ·Έλ§ν κ°μΉκ° μμ μλ μμ΅λλ€. κ·Έλ¬λ λͺ©λ‘μ΄ ν¬κ³ κ° νμ΄ λ³΅μ‘ν κ΅¬μ± μμ (λ§μ λμ°λ―Έ, κ³μ° λ μμ±, νμ κ΅¬μ± μμ λ±)λ₯Ό νΈμΆνλ€κ³ μμν΄λ³΄μμμ€. μλ₯Ό λ€μ΄ LinkedIn λ΄μ€ νΌλλ₯Ό μμν΄λ³΄μμμ€. μ¬λ°λ₯Έ νμ μ¬λ°λ₯Έ λ°μ΄ν°μ μΌμΉμν€μ§ μμΌλ©΄ κ΅¬μ± μμμ μΈμκ° μ μ¬μ μΌλ‘ λ§μ΄ λ³λλ μ μμΌλ©° μμλ³΄λ€ ν¨μ¬ λ§μ DOM μ λ°μ΄νΈκ° λ°μν μ μμ΅λλ€. μλͺ»λ DOM μμλ₯Ό μΌμΉμν€κ³ 컀μ μμΉ λ° ν μ€νΈ μ ν μνμ κ°μ DOM μνλ₯Ό μλ λ¬Έμ λ μμ΅λλ€.
μ λ°μ μΌλ‘ μΆκ° λΉκ΅ λ° ββλΆκΈ° λΉμ©μ μ€μ μ±μμ λλΆλΆμ μκ° λμ μ½κ² κ°μΉκ° μμ΅λλ€. Emberμ κΈ°λ³Έκ°μ key="@identity"
μ΄κ³ κ±°μ λͺ¨λ κ²½μ°μ μ μλνκΈ° λλ¬Έμ μΌλ°μ μΌλ‘ {{#each}}
μ¬μ©ν λ key
μΈμ μ€μ μ λν΄ κ±±μ ν νμκ° μμ΅λλ€.
νμ§λ§ μ κΉ, λ¬Έμ κ° μμ΅λλ€. μ΄ μ¬κ±΄μ μ΄λ»μ΅λκΉ?
const YEHUDA = { first: "Yehuda", last: "Katz" };
const TOM = { first: "Tom", last: "Dale" };
const GODFREY = { first: "Godfrey", last: "Chan" };
this.list = [
YEHUDA,
TOM,
GODFREY,
TOM, // duplicate
YEHUDA, // duplicate
YEHUDA, // duplicate
YEHUDA // duplicate
];
μ¬κΈ°μ λ¬Έμ λ λμΌν κ°μ²΄κ° λμΌν λͺ©λ‘μ μ¬λ¬ λ² λνλ μ μλ€λ κ²μ
λλ€. μ΄κ²μ μμ§ν @identity
μκ³ λ¦¬μ¦, νΉν "λ°μ΄ν°κ° μΌμΉνλ κΈ°μ‘΄ ν μ°ΎκΈ° ( ===
) ..."λΌκ³ λ§ν λΆλΆμ κΉ¨λ¨λ¦½λλ€. μ΄λ λ°μ΄ν°μ DOM κ΄κ³κ° 1 μΈ κ²½μ°μλ§ μλν©λλ€. : 1,μ΄ κ²½μ°μλ μ¬μ€μ΄ μλλλ€. μ΄κ²μ μ€μ λ‘λ λΆκ°λ₯ ν΄ λ³΄μΌ μ μμ§λ§ νλ μ μν¬λ‘μ μ°λ¦¬λ κ·Έκ²μ μ²λ¦¬ν΄μΌν©λλ€.
μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μΌμ’ μ νμ΄λΈλ¦¬λ μ κ·Ό λ°©μμ μ¬μ©νμ¬ μ΄λ¬ν μΆ©λμ μ²λ¦¬ν©λλ€. λ΄λΆμ μΌλ‘ ν€ -DOM 맀νμ λ€μκ³Ό κ°μ΅λλ€.
"YEHUDA" => <li>Yehuda...</li>
"TOM" => <li>Tom...</li>
"GODFREY" => <li>Godfrey...</li>
"TOM-1" => <li>Tom...</li>
"YEHUDA-1" => <li>Yehuda...</li>
"YEHUDA-2" => <li>Yehuda...</li>
"YEHUDA-3" => <li>Yehuda...</li>
λλΆλΆμ κ²½μ°, μ΄κ²μ λ§€μ° λλ¬Όκ³ , κ·Έκ²μ΄ λμ€λ©΄ λλΆλΆμ κ²½μ° Good Enough β’μμ μλν©λλ€. μ΄λ€ μ΄μ λ‘μ΄ λ°©λ²μ΄ μλνμ§ μλ κ²½μ° νμ ν€ κ²½λ‘ (λλ RFC 321μ κ³ κΈ ν€ μ§μ λ©μ»€λμ¦)λ₯Ό μ¬μ©ν μ μμ΅λλ€.
λͺ¨λ λνκ° λλλ©΄ μ΄μ Twiddleμμ μλ리μ€λ₯Ό μ΄ν΄λ³Ό μ€λΉκ°λμμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ [undefined, undefined, undefined, undefined, undefined]
λͺ©λ‘μΌλ‘ μμνμ΅λλ€.
κ΄λ ¨μλ λ©λͺ¨ :
Array(5)
λ[undefined, undefined, undefined, undefined, undefined]
μ λμΌνμ§ _ μλλλ€ _. μΌλ°μ μΌλ‘ νΌν΄μΌνλ "ν리 μ΄λ μ΄"λ₯Ό μμ±ν©λλ€. κ·Έλ¬λ "ꡬλ©"μ μ‘μΈμ€ ν λ μ€μ λ‘undefined
λλ € λ°κΈ° λλ¬Έμμ΄ λ²κ·Έμ κ΄λ ¨μ΄ μμ΅λλ€. κ·Έλμ μ°λ¦¬μ _ λ§€μ° μ’μ _ λͺ©μ μ μν΄μλ§, κ·Έκ²λ€μ λμΌν©λλ€.
ν€λ₯Ό μ§μ νμ§ μμκΈ° λλ¬Έμ Emberλ κΈ°λ³Έμ μΌλ‘ @identity
λ₯Ό μ¬μ©ν©λλ€. λν μΆ©λμ΄κΈ° λλ¬Έμ λ€μκ³Ό κ°μ κ²°κ³Όλ₯Ό μ»μμ΅λλ€.
"undefined" => <input ...> 0: ...,
"undefined-1" => <input ...> 1: ...,
"undefined-2" => <input ...> 2: ...,
"undefined-3" => <input ...> 3: ...,
"undefined-4" => <input ...> 4: ...
μ΄μ 첫 λ²μ§Έ νμΈλμ ν΄λ¦νλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.
{{action}}
μμ μμ μν΄ μ°¨λ¨λκ³ makeChange
λ©μλλ‘ λ€μ μ λ¬λλ ν΄λ¦ μ΄λ²€νΈλ₯Ό νΈλ¦¬κ±°ν©λλ€.[true, undefined, undefined, undefined, undefined]
λ³κ²½ν©λλ€.DOMμ μ΄λ»κ² μ λ°μ΄νΈλ©λκΉ?
true
μ μΌμΉνλ ( ===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. μ무κ²λ λ°κ²¬λμ§ μμμΌλ―λ‘ μ ν <input checked=true ...>0: true...
μ½μ
(μμ μΆκ°)undefined
μ μΌμΉνλ ( ===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. <input ...>0: ...
λ°κ²¬ (μ΄μ μ 첫 λ²μ§Έ ν) :{{idx}}
ν
μ€νΈ λ
Έλλ₯Ό 1
undefined
μ μΌμΉνλ ( ===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. undefined
λ λ²μ§Έλ‘ 보μμΌλ―λ‘ λ΄λΆ ν€λ undefined-1
μ΄λ―λ‘ <input ...>1: ...
(μ΄μ μ SECOND ν)μ μ°Ύμμ΅λλ€.{{idx}}
ν
μ€νΈ λ
Έλλ₯Ό 2
undefined-2
λ° undefined-3
undefined-4
νμ μ κ±°ν©λλ€ (μ
λ°μ΄νΈ ν λ°°μ΄μ undefined
κ° νλ λ μ μΌλ―λ‘).κ·Έλμ μ΄κ²μ μ°λ¦¬κ° νΈμλ€μμ μ»μ κ²°κ³Όλ₯Ό μ΄λ»κ² μ»μλμ§ μ€λͺ
ν©λλ€. κΈ°λ³Έμ μΌλ‘ λͺ¨λ DOM νμ΄ νλμ© μλλ‘ μ΄λνκ³ μ νμ΄ λ§¨ μμ μ½μ
λκ³ {{idx}}
κ° λλ¨Έμ§ νμ λν΄ μ
λ°μ΄νΈλ©λλ€.
μ λ§ μμμΉ λͺ»ν λΆλΆμ 2.2μ
λλ€. 첫 λ²μ§Έ νμΈλ (ν΄λ¦ ν νμΈλ)μ΄ ν νμ© μλλ‘ μ΄λνμ¬ λ λ²μ§Έ μμΉλ‘ μ΄λνμ§λ§, Emberμ checked
μμ±μ΄ true
λ³κ²½ λ κ²μΌλ‘ μμνμ κ²μ
λλ€. λ°μ΄λ κ°μ΄ μ μλμ§ μμκΈ° λλ¬Έμ Emberκ° λ€μ false
λ‘ λ³κ²½νμ¬ μ²΄ν¬λ₯Ό ν΄μ ν κ²μΌλ‘ μμ ν μ μμ΅λλ€.
κ·Έλ¬λ μ΄κ²μ μλ λ°©μμ΄ μλλλ€. μ²μμ μΈκΈνλ―μ΄ DOMμ μ‘μΈμ€νλ κ²μ λΉμ©μ΄ λ§μ΄ λλλ€. μ¬κΈ°μλ DOMμ _reading_μ΄ ν¬ν¨λ©λλ€. μ λ°μ΄νΈ ν λλ§λ€ λΉκ΅λ₯Ό μν΄ DOMμμ μ΅μ κ°μ μ½μ΄μΌνλ€λ©΄ μ΅μ ν λͺ©μ μ κ±°μ 무ν¨ν ν κ²μ λλ€. λ°λΌμμ΄λ₯Ό λ°©μ§νκΈ° μν΄ DOMμ κΈ°λ‘ν λ§μ§λ§ κ°μ κΈ°μ΅νκ³ DOMμμ λ€μ μ½μ νμμμ΄ νμ¬ κ°μ μΊμ λ κ°κ³Ό λΉκ΅ν©λλ€. μ°¨μ΄κ°μμ λλ§ DOMμ μ κ°μ μ°κ³ λ€μ λ²μ μΊμν©λλ€. μ΄κ²μ μ°λ¦¬κ° λμΌν "κ°μ DOM"μ κ·Ό λ°©μμ 곡μ νλ μλ―Έμ΄μ§λ§ μ 체 DOMμ "νΈλ¦¬ λμ€"λ₯Ό κ°μννμ§ μκ³ λ¦¬ν λ Έλμμλ§ μνν©λλ€.
λ°λΌμ TL; DR, checked
μμ± (λλ ν
μ€νΈ νλμ value
μμ± λ±)μ "λ°μΈλ©"νλ©΄ μμλλ‘ μλνμ§ μμ΅λλ€. <div>{{this.name}}</div>
λ₯Ό λ λλ§νκ³ jQuery
λλ Chrome κ²μ¬κΈ°λ₯Ό μ¬μ©νμ¬ div
μμμ textContent
λ₯Ό μλμΌλ‘ μ
λ°μ΄νΈ this.name
λ₯Ό μ
λ°μ΄νΈ ν κ²μ΄λΌκ³ λ μμνμ§ λͺ»νμ κ²μ
λλ€. μ΄κ²μ κΈ°λ³Έμ μΌλ‘ λμΌν©λλ€. checked
μμ±μ λν μ
λ°μ΄νΈκ° Ember μΈλΆμμ λ°μνκΈ° λλ¬Έμ (νμΈλμ λν λΈλΌμ°μ μ κΈ°λ³Έ λμμ ν΅ν΄) Emberλ μ΄μ λν΄ μ μ μμ΅λλ€.
μ΄κ²μ΄ {{input}}
λμ°λ―Έκ° μ‘΄μ¬νλ μ΄μ μ
λλ€. κ΄λ ¨ μ΄λ²€νΈ 리μ€λλ₯Ό κΈ°λ³Έ HTML μμμ λ±λ‘νκ³ μμ
μ μ μ ν μμ± λ³κ²½μ λ°μνμ¬ μ΄ν΄ λΉμ¬μ (μ : λ λλ§ λ μ΄μ΄)μκ² μ릴 μ μλλ‘ν΄μΌν©λλ€.
κ·Έκ²μ΄ μ°λ¦¬λ₯Ό λ λλ κ³³μ΄ νμ€νμ§ μμ΅λλ€. λλ μ΄κ²μ΄ μ λλΌμ΄ μ§ μ΄ν΄νμ§λ§ μ΄κ²μ΄ μΌλ ¨μ λΆνν μ¬μ©μ μ€λ₯λΌκ³ λ§νλ κ²½ν₯μ΄ μμ΅λλ€. μλ§λ μ°λ¦¬λ μ λ ₯ μμμ μ΄λ¬ν μμ±μ λ°μΈλ©νλ κ²μ λν΄ λ¦°ν ν΄μΌν κΉμ?
κ΄λ ¨ μ½λ :
https://github.com/emberjs/ember.js/blob/c24bc23e4139c90c8d8d96c4234d9c0c19e5c594/packages/@ember/ -internals / glimmer / lib / utils / iterable.ts # L390-L391
https://github.com/emberjs/ember.js/blob/c24bc23e4139c90c8d8d96c4234d9c0c19e5c594/packages/@ember/ -internals / glimmer / lib / utils / iterable.ts # L436-L445
https://github.com/emberjs/ember.js/blob/c24bc23e4139c90c8d8d96c4234d9c0c19e5c594/packages/@ember/ -internals / glimmer / lib / utils / iterable.ts # L451-L466
@chancancode- λλΌμ΄ μ€λͺ
μ κ°μ¬λ립λλ€. μ΄λ <input ... >
λ₯Ό μ λλ‘ μ¬μ©ν΄μλ μλμ§λ§ μ΄μ κ°μ λͺ¨λ μ€λ₯λ₯Ό λ°©μ§νκΈ° μν΄ {{input ...}}
λ§ μ¬μ©ν΄μΌνλ€λ μλ―Έμ
λκΉ?
@ boris-petrovμλ "μ΄ URLμ ν΄λ¦½ 보λμ 볡μ¬"νλ μ½κΈ° μ μ© ν
μ€νΈ νλμ κ°μ μ νλ κ²½μ°κ°μμ μ μμ΅λλ€. λλ μ
λ ₯ μμ + {{action}}
μ (λ₯Ό) κ°λ‘ μ± μ μμ΅λλ€. DOM μ΄λ²€νΈλ₯Ό μννκ³ μμ± μ
λ°μ΄νΈλ₯Ό μλμΌλ‘ λ°μν©λλ€ ( @identity
μΆ©λλ λ°μνλ€λ μ μ μ μΈνλ©΄ twiddleμ΄ μλν μμ
μ
λλ€).νμ§λ§ μ μ΄λ€ μμ μμλ {{input}}
λ§ λ€μ ꡬνν©λλ€. μ΄λ―Έ μ²λ¦¬ ν λͺ¨λ κ°μ₯μ리 μΌμ΄μ€λ₯Ό μ²λ¦¬ν©λλ€. κ·Έλμ λλ λΉμ μ΄ {{input}}
μ λΆλ μλμ§λ§ λλΆλΆμ μκ°μ μ¬μ©ν΄μΌνλ€κ³ λ§νλ κ²μ΄ _ μλ§λ _ 곡ννλ€κ³ μκ°ν©λλ€.
κ·Έλ¬λ ν€μμ μΆ©λμ΄μλμ΄ κ²½μ°λ μ¬μ ν "κ³ μ "λμ§ μμμ κ²μ λλ€. https://ember-twiddle.com/0f2369021128e2ae0c445155df5bb034?openFiles=templates.application.hbs%2C μ°Έμ‘°
κ·Έλμ μ κ°μ΄ λ¬Έμ μ λν΄ μ΄λ»κ²ν΄μΌν μ§ 100 % νμ€νμ§ μλ€κ³ λ§νμ΅λλ€. ννΈμΌλ‘λ λλκ³ μμμΉ λͺ»ν μΌμ΄λΌλ λ° λμν©λλ€. λ°λ©΄μ μ΄λ¬ν μ’ λ₯μ μΆ©λμ μ€μ μ±μμ λ§€μ° λλ¬Όλ©° "ν€"μΈμλ₯Ό μ¬μ©μ μ μ ν μμλ μ΄μ μ λλ€ (κΈ°λ³Έ "@identity"ν€κ°μλ κ²½μ°) κΈ°λ₯μ Good Enough β’κ° μλλ―λ‘ ν΄λΉ κΈ°λ₯μ΄ μ‘΄μ¬ν©λλ€.)
@chancancode- μ΄κ²μ λ΄κ° μΌλ§ μ μ μ΄μλ λ λ€λ₯Έ λ¬Έμ λ₯Ό μκΈ°μν¨λ€. λΉμ·ν κ²μ΄ μλ€κ³ μκ°νμλκΉ? λ΄κ°λ°μ λλ΅ (λ°°μ΄ μμλ₯Ό μ€μ ν λ set
λμ replace
μ (λ₯Ό) μ¬μ©ν νμκ° μμ) μ¬μ ν λμκ² μ΄μνκ² λ³΄μ
λλ€.
@ boris-petrov λλ κ·Έκ²μ΄ κ΄λ ¨μ΄ μλ€κ³ μκ°νμ§ μλλ€
μλ νμΈμ, μ°λ¦¬λ emberλ‘ λλκ·Έ κ°λ₯ν λͺ©λ‘μ sortablejsλ₯Ό μ¬μ©ν©λλ€. plsλ κ° λ¬Έμ λ₯Ό μ¬ννκΈ° μν΄μ΄ λ°λͺ¨ λ₯Ό νμΈν©λλ€.
λ¨κ³:
λλκ·Έ ν νλͺ©μ΄ DOM νΈλ¦¬μ λ¨μμλ κ²μ λ³Ό μ μμ΅λλ€.
κ·Έλ¬λ νλͺ©μ λ€λ₯Έ μμΉ (λ§μ§λ§ νλͺ©μ΄ μλ)λ‘ λλκ·Ένλ©΄ μ μλνλ κ² κ°μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ μ¬κΈ°μ λ¬΄μ¨ μΌμ΄ μΌμ΄λκ³ μλμ§ μκ³ μλ€κ³ μκ°ν©λλ€. μλ§μ΄μ§λ§ μ€λͺ νλ €κ³ λ Έλ ₯ν κ²μ λλ€. λ§μ μ£μ§ μΌμ΄μ€ (ν λ리 λΌμΈ μ¬μ©μ μ€λ₯)κ°μ΄ λ¬Έμ μ κΈ°μ¬νμΌλ©° λ²κ·Έκ° 무μμΈμ§, λ²κ·Έκ° μλμ§, 무μμ μ΄λ»κ² μμ ν΄μΌνλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€.
μ£Όμ π
λ¨Όμ
{{#each}}
μμkey
λ§€κ° λ³μκ° μννλ μμ μ μ€λͺ ν΄μΌν©λλ€. μμ½νμλ©΄, DOMμ μ²μλΆν° λ§λλ κ²μ΄ μλλΌ κΈ°μ‘΄ DOMμ μ¬μ¬μ©νλ κ²μ΄ ν©λ¦¬μ μΌμ§ μ¬λΆμμκΈ°λ₯Ό κ²°μ νλ €κ³ ν©λλ€.μ°λ¦¬μ λͺ©μ μ μν΄ "DOM ν°μΉ"(μ : ν μ€νΈ λ Έλ, μμ±μ λ΄μ© μ λ°μ΄νΈ, λ΄μ© μΆκ° λλ μ κ±° λ±)λ λΉμ©μ΄ λ§μ΄ λ€κ³ κ°λ₯ν ν νΌν΄μΌνλ€λ μ μ λ°μ λ€μ¬ λ΄ μλ€.
λ€μ κ°λ¨ν ν νλ¦Ώμ μ§μ€ ν΄ λ³΄κ² μ΅λλ€.
this.names
κ° ...κ·ΈλΌ λΉμ μ μ»μ κ²μ λλ€ ...
μ¬νκΉμ§λ κ·Έλ°λλ‘ μλλ€.
λͺ©λ‘μ νλͺ© μΆκ°
μ΄μ λͺ©λ‘μ
{ first: "Andrew", last: "Timberlake" }
λ₯Ό μΆκ°νλ©΄ μ΄λ¨κΉμ? ν νλ¦Ώμ΄ λ€μ DOMμ μμ± ν κ²μΌλ‘ μμν©λλ€.νμ§λ§ _how_?
{{#each}}
λμ°λ―Έλ₯Ό ꡬννλ κ°μ₯ μμ§ν λ°©λ²μ λͺ©λ‘μ λ΄μ©μ΄ λ³κ²½ λ λλ§λ€ λͺ©λ‘μ λͺ¨λ λ΄μ©μ μ§μ°λ κ²μ λλ€. μ΄λ κ²νλ €λ©΄ _ μ΅μν _ 23 κ°μ μμ μ μνν΄μΌν©λλ€.<li>
λ Έλ 3 κ° μ κ±°<li>
λ Έλ 4 κ° μ½μto-upper-case
λμ°λ―Έλ₯Ό 4 λ² νΈμΆν©λλ€.μ΄κ²μ ... λ§€μ° λΆνμνκ³ λΉμΈ 보μ λλ€. μ²μ μΈ νλͺ©μ λ³κ²½λμ§ μμμΌλ―λ‘ ν΄λΉ νμ λν μμ μ 건λ λΈ μ μμΌλ©΄ μ’μ κ²μ λλ€.
π @index
λ λμ ꡬνμ κΈ°μ‘΄ νμ μ¬μ¬μ©νκ³ λΆνμν μ λ°μ΄νΈλ₯Ό μννμ§ μλ κ²μ λλ€. ν κ°μ§ μμ΄λμ΄λ λ¨μν νμ ν νλ¦Ώμ μμΉμ μΌμΉμν€λ κ²μ λλ€. μ΄κ²μ λ³Έμ§μ μΌλ‘
key="@index"
μν μ λλ€.{ first: "Yehuda", last: "Katz" }
μ 첫 λ²μ§Έ ν<li>Yehuda KATZ</li>
:1.1. "Yehuda"=== "Yehuda", ν μΌ μμ
1.2. (곡κ°μ λμ λ°μ΄ν°κ° ν¬ν¨λμ΄ μμ§ μμΌλ―λ‘ λΉκ΅κ° νμνμ§ μμ΅λλ€.)
1.3. "Katz"=== "Katz", ν¬νΌλ "μμ"μ΄λ―λ‘
to-upper-case
ν¬νΌλ₯Ό λ€μ νΈμΆ ν νμκ° μμμ μκ³ μμΌλ―λ‘ ν΄λΉ ν¬νΌμ μΆλ ₯μ μκ³ μμ΅λλ€ ( "KATZ" ) _also_ λ³κ²½λμ§ μμμΌλ―λ‘ μ¬κΈ°μ ν μΌμ΄ μμ΅λλ€.3.1.
<li>
λ Έλ μ½μ3.2. ν μ€νΈ λ Έλ ( "Andrew") μ½μ
3.3. ν μ€νΈ λ Έλ (곡백) μ½μ
3.4.
to-upper-case
λμ°λ―Έ νΈμΆ ( "Timberlake"-> "TIMBERLAKE")3.5. ν μ€νΈ λ Έλ ( "TIMBERLAKE") μ½μ
λ°λΌμμ΄ κ΅¬νμ ν΅ν΄ μ΄ μμ μλ₯Ό 23 κ°μμ 5 κ°λ‘ μ€μμ΅λλ€. λμμ§ μλ€.
λͺ©λ‘μ νλͺ© μΆκ°
νμ§λ§ μ΄μ λͺ©λ‘μ _appending_
{ first: "Andrew", last: "Timberlake" }
λμ _prepended_νλ©΄ μ΄λ»κ² λ κΉμ? ν νλ¦Ώμ΄ λ€μ DOMμ μμ± ν κ²μΌλ‘ μμν©λλ€.νμ§λ§ _how_?
{ first: "Andrew", last: "Timberlake" }
λ₯Ό 첫 λ²μ§Έ ν<li>Yehuda KATZ</li>
.1.1. "Andrew"! == "Yehuda", ν μ€νΈ λ Έλ μ λ°μ΄νΈ
1.2. (곡κ°μ λμ λ°μ΄ν°κ° ν¬ν¨λμ΄ μμ§ μμΌλ―λ‘ λΉκ΅κ° νμνμ§ μμ΅λλ€.)
1.3. "Timberlake"! == "Katz",
to-upper-case
λμ°λ―Έ λ€μ νΈμΆ1.4. "KATZ"μμ "TIMBERLAKE"λ‘ ν μ€νΈ λ Έλ μ λ°μ΄νΈ
{ first: "Yehuda", last: "Katz" }
λ₯Ό λ λ²μ§Έ ν<li>Tom DALE</li>
, λ€λ₯Έ 3 κ° μμ κ³Ό λΉκ΅ν©λλ€.{ first: "Tom", last: "Dale" }
λ₯Ό λ λ²μ§Έ ν<li>Godfrey CHAN</li>
, λ€λ₯Έ 3 κ° μμ κ³Ό λΉκ΅ν©λλ€.3.1.
<li>
λ Έλ μ½μ3.2. ν μ€νΈ λ Έλ ( "Godfrey") μ½μ
3.3. ν μ€νΈ λ Έλ (곡백) μ½μ
3.4.
to-upper-case
λμ°λ―Έ νΈμΆ ( "Chan"-> "CHAN")3.5. ν μ€νΈ λ Έλ ( "CHAN") μ½μ
κ·Έκ²μ 14 κ°μ μμ μ λλ€. μμΌ!
π @identity
κ°λ μ μΌλ‘ μ°λ¦¬κ° μ λλ μΆκ°νλ , μ°λ¦¬λ μ¬μ ν λ°°μ΄μ λ¨μΌ κ°μ²΄ λ§ λ³κ²½ (μ½μ )νκ³ μκΈ° λλ¬Έμ λΆνμ ν΄ λ³΄μμ΅λλ€. μ΅μ μΌλ‘, μ°λ¦¬λ μΆκ° μλ리μ€μμνλ κ²μ²λΌμ΄ μΌμ΄μ€λ₯Ό μ²λ¦¬ ν μ ββμμ΄μΌν©λλ€.
μ¬κΈ°μ
key="@identity"
κ° λ€μ΄μ΅λλ€. λ°°μ΄μμλ μμμ _order_μ μμ‘΄νλ λμ JavaScript κ°μ²΄ ID (===
)λ₯Ό μ¬μ©ν©λλ€.{ first: "Andrew", last: "Timberlake" }
μ μΌμΉνλ (===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. μ무κ²λ λ°κ²¬λμ§ μμμΌλ―λ‘ μ νμ μ½μ (μμ μΆκ°)ν©λλ€.1.1.
<li>
λ Έλ μ½μ1.2. ν μ€νΈ λ Έλ ( "Andrew") μ½μ
1.3. ν μ€νΈ λ Έλ (곡백) μ½μ
1.4.
to-upper-case
λμ°λ―Έ νΈμΆ ( "Timberlake"-> "TIMBERLAKE")1.5. ν μ€νΈ λ Έλ ( "TIMBERLAKE") μ½μ
{ first: "Yehuda", last: "Katz" }
μ μΌμΉνλ (===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€.<li>Yehuda KATZ</li>
λ°κ²¬ :2.1. "Yehuda"=== "Yehuda", ν μΌ μμ
2.2. (곡κ°μ λμ λ°μ΄ν°κ° ν¬ν¨λμ΄ μμ§ μμΌλ―λ‘ λΉκ΅κ° νμνμ§ μμ΅λλ€.)
2.3. "Katz"=== "Katz", ν¬νΌλ "μμ"μ΄λ―λ‘
to-upper-case
ν¬νΌλ₯Ό λ€μ νΈμΆ ν νμκ° μμμ μκ³ μμΌλ―λ‘ ν΄λΉ ν¬νΌμ μΆλ ₯μ μκ³ μμ΅λλ€ ( "KATZ" ) _also_ λ³κ²½λμ§ μμμΌλ―λ‘ μ¬κΈ°μ ν μΌμ΄ μμ΅λλ€.μ΄λ₯Ό ν΅ν΄ μ΅μ μ 5 κ°μ§ μμ μΌλ‘ λμκ°λλ€.
νμ₯
λ€μ λ§νμ§λ§ μ΄κ²μ λΉκ΅μ λΆκΈ° λΉμ©μ μμ νλλ κ²μ λλ€. μ¬μ€, κ·Έκ²λ€λ 무λ£κ° μλλ©°,μ΄ μμ£Ό κ°λ¨ν μμμλ κ·Έλ§ν κ°μΉκ° μμ μλ μμ΅λλ€. κ·Έλ¬λ λͺ©λ‘μ΄ ν¬κ³ κ° νμ΄ λ³΅μ‘ν κ΅¬μ± μμ (λ§μ λμ°λ―Έ, κ³μ° λ μμ±, νμ κ΅¬μ± μμ λ±)λ₯Ό νΈμΆνλ€κ³ μμν΄λ³΄μμμ€. μλ₯Ό λ€μ΄ LinkedIn λ΄μ€ νΌλλ₯Ό μμν΄λ³΄μμμ€. μ¬λ°λ₯Έ νμ μ¬λ°λ₯Έ λ°μ΄ν°μ μΌμΉμν€μ§ μμΌλ©΄ κ΅¬μ± μμμ μΈμκ° μ μ¬μ μΌλ‘ λ§μ΄ λ³λλ μ μμΌλ©° μμλ³΄λ€ ν¨μ¬ λ§μ DOM μ λ°μ΄νΈκ° λ°μν μ μμ΅λλ€. μλͺ»λ DOM μμλ₯Ό μΌμΉμν€κ³ 컀μ μμΉ λ° ν μ€νΈ μ ν μνμ κ°μ DOM μνλ₯Ό μλ λ¬Έμ λ μμ΅λλ€.
μ λ°μ μΌλ‘ μΆκ° λΉκ΅ λ° ββλΆκΈ° λΉμ©μ μ€μ μ±μμ λλΆλΆμ μκ° λμ μ½κ² κ°μΉκ° μμ΅λλ€. Emberμ κΈ°λ³Έκ°μ
key="@identity"
μ΄κ³ κ±°μ λͺ¨λ κ²½μ°μ μ μλνκΈ° λλ¬Έμ μΌλ°μ μΌλ‘{{#each}}
μ¬μ©ν λkey
μΈμ μ€μ μ λν΄ κ±±μ ν νμκ° μμ΅λλ€.μΆ©λ π₯
νμ§λ§ μ κΉ, λ¬Έμ κ° μμ΅λλ€. μ΄ μ¬κ±΄μ μ΄λ»μ΅λκΉ?
μ¬κΈ°μ λ¬Έμ λ λμΌν κ°μ²΄κ° λμΌν λͺ©λ‘μ μ¬λ¬ λ² λνλ μ μλ€λ κ²μ λλ€. μ΄κ²μ μμ§ν
@identity
μκ³ λ¦¬μ¦, νΉν "λ°μ΄ν°κ° μΌμΉνλ κΈ°μ‘΄ ν μ°ΎκΈ° (===
) ..."λΌκ³ λ§ν λΆλΆμ κΉ¨λ¨λ¦½λλ€. μ΄λ λ°μ΄ν°μ DOM κ΄κ³κ° 1 μΈ κ²½μ°μλ§ μλν©λλ€. : 1,μ΄ κ²½μ°μλ μ¬μ€μ΄ μλλλ€. μ΄κ²μ μ€μ λ‘λ λΆκ°λ₯ ν΄ λ³΄μΌ μ μμ§λ§ νλ μ μν¬λ‘μ μ°λ¦¬λ κ·Έκ²μ μ²λ¦¬ν΄μΌν©λλ€.μ΄λ₯Ό λ°©μ§νκΈ° μν΄ μΌμ’ μ νμ΄λΈλ¦¬λ μ κ·Ό λ°©μμ μ¬μ©νμ¬ μ΄λ¬ν μΆ©λμ μ²λ¦¬ν©λλ€. λ΄λΆμ μΌλ‘ ν€ -DOM 맀νμ λ€μκ³Ό κ°μ΅λλ€.
λλΆλΆμ κ²½μ°, μ΄κ²μ λ§€μ° λλ¬Όκ³ , κ·Έκ²μ΄ λμ€λ©΄ λλΆλΆμ κ²½μ° Good Enough β’μμ μλν©λλ€. μ΄λ€ μ΄μ λ‘μ΄ λ°©λ²μ΄ μλνμ§ μλ κ²½μ° νμ ν€ κ²½λ‘ (λλ RFC 321μ κ³ κΈ ν€ μ§μ λ©μ»€λμ¦)λ₯Ό μ¬μ©ν μ μμ΅λλ€.
"π"μΌλ‘ λμ κ°κΈ°
λͺ¨λ λνκ° λλλ©΄ μ΄μ Twiddleμμ μλ리μ€λ₯Ό μ΄ν΄λ³Ό μ€λΉκ°λμμ΅λλ€.
κΈ°λ³Έμ μΌλ‘
[undefined, undefined, undefined, undefined, undefined]
λͺ©λ‘μΌλ‘ μμνμ΅λλ€.ν€λ₯Ό μ§μ νμ§ μμκΈ° λλ¬Έμ Emberλ κΈ°λ³Έμ μΌλ‘
@identity
λ₯Ό μ¬μ©ν©λλ€. λν μΆ©λμ΄κΈ° λλ¬Έμ λ€μκ³Ό κ°μ κ²°κ³Όλ₯Ό μ»μμ΅λλ€.μ΄μ 첫 λ²μ§Έ νμΈλμ ν΄λ¦νλ€κ³ κ°μ ν΄ λ³΄κ² μ΅λλ€.
{{action}}
μμ μμ μν΄ μ°¨λ¨λκ³makeChange
λ©μλλ‘ λ€μ μ λ¬λλ ν΄λ¦ μ΄λ²€νΈλ₯Ό νΈλ¦¬κ±°ν©λλ€.[true, undefined, undefined, undefined, undefined]
λ³κ²½ν©λλ€.DOMμ μ΄λ»κ² μ λ°μ΄νΈλ©λκΉ?
true
μ μΌμΉνλ (===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€. μ무κ²λ λ°κ²¬λμ§ μμμΌλ―λ‘ μ ν<input checked=true ...>0: true...
μ½μ (μμ μΆκ°)undefined
μ μΌμΉνλ (===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€.<input ...>0: ...
λ°κ²¬ (μ΄μ μ 첫 λ²μ§Έ ν) :2.1.
{{idx}}
ν μ€νΈ λ Έλλ₯Ό1
2.2. κ·Έλ μ§ μμΌλ©΄, Emberκ° λ§ν μμλ ν,μ΄ νμμ λ€λ₯Έ κ²μ μ무κ²λ λ³κ²½λμ§ μμμΌλ©° λ€λ₯Έ ν μΌλ μμ΅λλ€.
undefined
μ μΌμΉνλ (===
) κΈ°μ‘΄ νμ μ°Ύμ΅λλ€.undefined
λ λ²μ§Έλ‘ 보μμΌλ―λ‘ λ΄λΆ ν€λundefined-1
μ΄λ―λ‘<input ...>1: ...
(μ΄μ μ SECOND ν)μ μ°Ύμμ΅λλ€.3.1.
{{idx}}
ν μ€νΈ λ Έλλ₯Ό2
3.2. κ·Έλ μ§ μμΌλ©΄, Emberκ° λ§ν μμλ ν,μ΄ νμμ λ€λ₯Έ κ²μ μ무κ²λ λ³κ²½λμ§ μμμΌλ©° λ€λ₯Έ ν μΌλ μμ΅λλ€.
undefined-2
λ°undefined-3
undefined-4
νμ μ κ±°ν©λλ€ (μ λ°μ΄νΈ ν λ°°μ΄μundefined
κ° νλ λ μ μΌλ―λ‘).κ·Έλμ μ΄κ²μ μ°λ¦¬κ° νΈμλ€μμ μ»μ κ²°κ³Όλ₯Ό μ΄λ»κ² μ»μλμ§ μ€λͺ ν©λλ€. κΈ°λ³Έμ μΌλ‘ λͺ¨λ DOM νμ΄ νλμ© μλλ‘ μ΄λνκ³ μ νμ΄ λ§¨ μμ μ½μ λκ³
{{idx}}
κ° λλ¨Έμ§ νμ λν΄ μ λ°μ΄νΈλ©λλ€.μ λ§ μμμΉ λͺ»ν λΆλΆμ 2.2μ λλ€. 첫 λ²μ§Έ νμΈλ (ν΄λ¦ ν νμΈλ)μ΄ ν νμ© μλλ‘ μ΄λνμ¬ λ λ²μ§Έ μμΉλ‘ μ΄λνμ§λ§, Emberμ
checked
μμ±μ΄true
λ³κ²½ λ κ²μΌλ‘ μμνμ κ²μ λλ€. λ°μ΄λ κ°μ΄ μ μλμ§ μμκΈ° λλ¬Έμ Emberκ° λ€μfalse
λ‘ λ³κ²½νμ¬ μ²΄ν¬λ₯Ό ν΄μ ν κ²μΌλ‘ μμ ν μ μμ΅λλ€.κ·Έλ¬λ μ΄κ²μ μλ λ°©μμ΄ μλλλ€. μ²μμ μΈκΈνλ―μ΄ DOMμ μ‘μΈμ€νλ κ²μ λΉμ©μ΄ λ§μ΄ λλλ€. μ¬κΈ°μλ DOMμ _reading_μ΄ ν¬ν¨λ©λλ€. μ λ°μ΄νΈ ν λλ§λ€ λΉκ΅λ₯Ό μν΄ DOMμμ μ΅μ κ°μ μ½μ΄μΌνλ€λ©΄ μ΅μ ν λͺ©μ μ κ±°μ 무ν¨ν ν κ²μ λλ€. λ°λΌμμ΄λ₯Ό λ°©μ§νκΈ° μν΄ DOMμ κΈ°λ‘ν λ§μ§λ§ κ°μ κΈ°μ΅νκ³ DOMμμ λ€μ μ½μ νμμμ΄ νμ¬ κ°μ μΊμ λ κ°κ³Ό λΉκ΅ν©λλ€. μ°¨μ΄κ°μμ λλ§ DOMμ μ κ°μ μ°κ³ λ€μ λ²μ μΊμν©λλ€. μ΄κ²μ μ°λ¦¬κ° λμΌν "κ°μ DOM"μ κ·Ό λ°©μμ 곡μ νλ μλ―Έμ΄μ§λ§ μ 체 DOMμ "νΈλ¦¬ λμ€"λ₯Ό κ°μννμ§ μκ³ λ¦¬ν λ Έλμμλ§ μνν©λλ€.
λ°λΌμ TL; DR,
checked
μμ± (λλ ν μ€νΈ νλμvalue
μμ± λ±)μ "λ°μΈλ©"νλ©΄ μμλλ‘ μλνμ§ μμ΅λλ€.<div>{{this.name}}</div>
λ₯Ό λ λλ§νκ³jQuery
λλ Chrome κ²μ¬κΈ°λ₯Ό μ¬μ©νμ¬div
μμμtextContent
λ₯Ό μλμΌλ‘ μ λ°μ΄νΈthis.name
λ₯Ό μ λ°μ΄νΈ ν κ²μ΄λΌκ³ λ μμνμ§ λͺ»νμ κ²μ λλ€. μ΄κ²μ κΈ°λ³Έμ μΌλ‘ λμΌν©λλ€.checked
μμ±μ λν μ λ°μ΄νΈκ° Ember μΈλΆμμ λ°μνκΈ° λλ¬Έμ (νμΈλμ λν λΈλΌμ°μ μ κΈ°λ³Έ λμμ ν΅ν΄) Emberλ μ΄μ λν΄ μ μ μμ΅λλ€.μ΄κ²μ΄
{{input}}
λμ°λ―Έκ° μ‘΄μ¬νλ μ΄μ μ λλ€. κ΄λ ¨ μ΄λ²€νΈ 리μ€λλ₯Ό κΈ°λ³Έ HTML μμμ λ±λ‘νκ³ μμ μ μ μ ν μμ± λ³κ²½μ λ°μνμ¬ μ΄ν΄ λΉμ¬μ (μ : λ λλ§ λ μ΄μ΄)μκ² μ릴 μ μλλ‘ν΄μΌν©λλ€.κ·Έκ²μ΄ μ°λ¦¬λ₯Ό λ λλ κ³³μ΄ νμ€νμ§ μμ΅λλ€. λλ μ΄κ²μ΄ μ λλΌμ΄ μ§ μ΄ν΄νμ§λ§ μ΄κ²μ΄ μΌλ ¨μ λΆνν μ¬μ©μ μ€λ₯λΌκ³ λ§νλ κ²½ν₯μ΄ μμ΅λλ€. μλ§λ μ°λ¦¬λ μ λ ₯ μμμ μ΄λ¬ν μμ±μ λ°μΈλ©νλ κ²μ λν΄ λ¦°ν ν΄μΌν κΉμ?