ìì¶ì ì¬ë ëë§ì ë ëë§ íë¡ìžì€ ì€ì ìŽë¯ž ë ëë§ë í목ì ìì í ìë늬ì€ë¥Œ ëíë ëë€.
ì륌 ë€ìŽ:
{{foo}} {{foo-bar parent=this}}
// app/components/foo-bar.js
export default Ember.Component.extend({
init() {
this._super(...arguments);
this.get('parent').set('foo', 'bar');
}
});
볎ìë€ìíŒ foo-bar
êµ¬ì± ììê° ìžì€íŽì€íëê³ ë ëë§ë ë쯀ìë ìŽë¯ž ìì 컚í
ì€ížìì foo
ê°ì ì¬ì©íì¬ {{foo}}
ì±ì ìµëë€. ê·žë¬ë ìì±ììì ëìŒí ê°ì ìì íë €ê³ íìŒë¯ë¡ ë°ëŒì. "ííŽ".
ìŽê²ì ë§€ì° ê·¹ëšì ìž ììŽì§ë§ 묞ì 륌 볎ì¬ì€ëë€. init
, didInitAttrs
, didReceiveAttrs
, willInsertElement
ë° willRender
ìžìë ë ëë§ íë¡ìžì€ ì€ì ëêž°ì ìŒë¡ ë°ìí©ëë€. ëí ìì¶ì ì ì¢
ì¢
ìë°©í¥ ë°ìžë© ìì±ì ëììŒë¡ ìžíŽ ë°ìíë 묞ì ì
ëë€.
ìŽ ëìì íì ì 뢰í ì ììì§ë§ ì§ì ì€ëšìŒë¡ ë¶ë¶ì ìŒë¡ ì§ìëììµëë€(Ember 1.13 ìŽí).
You modified ApplicationController.foo twice in a single render. This was unreliable in Ember 1.x and will be removed in Ember 3.0
1.13ë¶í° Emberë ìì¶ì ìŽ ê°ì§ëë©Ž ìŠì ë ë²ì§ž ì¬ë ëë§ì ìííê³ ìì€í ìŽ ìì íë ëê¹ì§ ë°ë³µíì¬ ìŽë¥Œ ì§ìíìµëë€. ìŽ ì ëµ ìì²Žê° ì±ë¥ 묞ì ì ììžìŽ ë ì ììµëë€. ê·¹ëšì ìž ê²œì° ë¬Ží 룚íê° ë°ìí ì ììµëë€.
Glimmer 2ìì ì¶ê° ì¬ë ëë§ì ë¹êµì ì ë Žíì§ë§ set
ìì¶ì ì ê°ì§íêž° ìí ì¶ê° ë¶êž°ë ê·žë ì§ ììµëë€. Glimmer 2 ìì€í
ì ì¥ì ì€ íëë ë³ê²œ ì¬íì ì¶ì íêž° ìíŽ êŽì°°ì륌 ìŽì¬í ì€ì í íìê° ìë€ë ê²ì
ëë€. ëí Glimmer 2ì í¹ì ìµì í 륌 íµíŽ ìì€í
ì ëŽë¶ìì ë³ê²œë ì¬íìŽ ìë ê²œì° íì ížëŠ¬ íìì 걎ëëž ì ììµëë€.
íšê» ìŽë¬í ììë ë§ì ìì ì¶ê° ì¥ë¶ë¥Œ ìííê³ ìŽë¬í ìµì í륌 ìëì ìŒë¡ 묎íšííì§ ìê³ ë ìŽë¬í ìì¶ì set
(ëë 묎ìžê°ê° "ìŽë¯ž ë ëë§"ëìëì§ ì¬ë¶)륌 ìœê² ê°ì§í ì ììì ì믞í©ëë€.
ì°ëŠ¬ë ìŽë¯ž ìŽë¥Œ ì§ìíêž° ìíŽ ìœë륌 ìì±íì§ë§, ìŽë¯ž ì 뢰í ì ìë êž°ë¥ì í¹ì±ê³Œ (ë§€ì° ì€ìí) ë¶êž° ë¹ì©ìŒë¡ ìžíŽ ì¬ì í íìíì§ ì¬ë¶ë¥Œ 몚륞 ì± ëªšë ì¬ëìŽ ìëìŒë¡ íì±ííë ê²ì 죌ì í©ëë€.
ííìŒë¡ ì°ëŠ¬ë íì¬ ê°ë° 몚ëììë§ íì§ë¥Œ ìííê³ ì§ì ì€ëš ë©ìì§ë¥Œ ê°ë° 몚ë 죌ì¥(íë ì€ë¥)ìŒë¡ ì ííìµëë€. íë¡ëì 몚ëììë ê°ì§ ìœëê° ì ê±°ëê³ ìì¶ì ìŽ ìëíì§ ììµëë€.
ë ë²ì§ž êž°ë¥ íëê·ž ë€ì ìë ìœëë² ìŽì€ìì ìŽ êž°ë¥ì ì§ìíë êž°ë¥(ìŽì€ì ììŽ)ì ì ì§íìµëë€. ìœëë CIìì ì§ìì ìŒë¡ í ì€ížëê³ ìì§ë§ ë€ì ëšê³ë¥Œ ê²°ì íêž°ì 충ë¶í ì¬ì© ì ë³Žê° ìì ëê¹ì§ Ʞ볞ì ìŒë¡ ë¹íì±íëìŽ ììµëë€.
ìŽë¡ ìžíŽ ìí¥ì ë°ë ì¬ì© íšíŽìŽ ìë€ê³ ìê°ëë ê²œì° ìëì ìë늬ì€ì ëí ììží ëŽì©ì ì ê³µíìžì. ìì§ì ì ë©Žì ìŒë¡ ë³ê²œí íìê° ìë ëì ë°/ëë ì°ëŠ¬ê° ì¬ì©í ì ìë ëì ì룚ì ìŽ ìì ê°ë¥ì±ìŽ ë§€ì° ëìµëë€. ë°ëŒì ìœëë² ìŽì€ì ìì ìœë ì¡°ê°ì 볎ì¬ì£Œë ëì 배겜 ì 볎ì ì¬ì©ë²ì ëí 컚í ì€ížë¥Œ ì ê³µíë ê²ìŽ ëììŽ ë ê²ì ëë€.
ì°žê³ ë¡ ì±ì ìŽë¬í ê²œê³ ì€ ìŒë¶ê° ìììµëë€. í¹í, êµ¬ì± ììì init
ìì ìë¹ì€ì ìŒë¶ ìì±ì ì
ë°ìŽížíëë°, ìŽë íìŽì§ì ë€ë¥ž íëª©ìŽ ë€ë¥Žê² ë ëë§ëëë¡ ížëŠ¬ê±°í©ëë€.
ë€ì ì€í 룚íìì ìì± ë³ê²œì ììœíì¬ ìŽ ê²œê³ ë¥Œ ìì íë ê²ì ë§€ì° ê°ëší©ëë€. (ìë¹í í°) ì±ìì 몚ë ê²œê³ ë¥Œ ì¶ì íê³ ìì íë ë° ~1ìê°ìŽ ê±žë žìµëë€. ìŽê²ì êž°ì ì ìŒë¡ 죌ì ë³ê²œ ì¬íìŽì§ë§ ì¶ê° ìì ìŽ íìíëëŒë ê·íì íê°ì ëìí©ëë€.
@fivetanley ë ì¬êž°ìì ì€ë¥ ë©ìì§ë¥Œ ê°ì íë ê²ìŽ ì¢ìµëë€. @krissselden 곌 @stefanpenner ê° ìŽë¬í 묞ì 륌 ì¶ì íêž° ìí ìí¬íë¡ë¥Œ ê°ì§ê³ ìë€ë ê²ì ìê³ ììµëë€. ìë§ë ìŽ ë¬žì ì ëí ì§ì¹šì ì ê³µíë ë° ëììŽ ë ê²ì ëë€.
@joukevandermaas run.next()ë ìŽ ì€ë¥ì ëí íë¥í ìì ì ìëì§ë§ ìŽë¬í ì€ë¥ì ìëëë€ë©Ž ì ê±°êž°ì ê°ìŒ íëì§ ìŽíŽí©ëë€. ë°ìŽí°ì ìë¥ê° ìŽë¯ž ë ëë§ë í목ì 묎íšííë ìŽì 륌 ìŽíŽíë ê²ìŽ ê°ì¥ ì¢ìµëë€.
몚ë êµ¬ì± ììì 죌ì í ì ìë ìë¹ì€ì ìíì ì€ì íë©Ž íŽë¹ ìžížê° ìŽë¯ž ë ëë§ë í목ì 묎íšíí ê°ë¥ì±ìŽ ëìì§ëë€. ìŒë°ì ìŒë¡ set()ì ë ëë§ íí¬ ëì ëŽë¶ ìíììë§ ì¬ì©ëë©° ì ë ¥ìŽë ìë¹ì€ì ì°ê²°ëì§ ìê³ set()ì ìŽë²€ížìì ì¬ì©ëë íšíŽìŽìŽìŒ íë©° ì ë ¥ ìíë ë¬Œê±ŽìŽ ë ëë§ë ëê¹ì§ íŽê²°ëìŽìŒ í©ëë€.
@joukevandermaas run.next()ë ìŽ ì€ë¥ì ëí íë¥í ìì ìŽ ìëëë€.
ìŽë ê² íë©Ž ì±ë¥ 묞ì ê° ë°ìí©ëë€. ìŽ ê²œì° glimmer2ë "ì€ë³µ ìì ìŽ ë°ìíê³ ììµëë€. ì±ë¥ìŽ ë°ìŽë ì±ì ìíë€ë©Ž ìŽê²ì ìíì§ ììµëë€"ëŒê³ ìë €ì€ëë€. ìŽì ìë ì ë²ê° ìŽë¥Œ í¡ìíì§ë§ ì±ë¥ ì í륌 ìŽëíìµëë€.
ì¬êž°ì ë ë§ì ì§ì ê³µì ìì ìŽ ììµëë€... ê¶ê·¹ì ìŒë¡ ì°ëŠ¬ë ìŽê²ìŽ ì±ì ìí 걎ê°í êžžìŽëŒê³ 믿ìµëë€. ê·žë¬ë ì°ëŠ¬ë 몚ë ì¬ëìŽ ííì ë°ì ì ìë ë구ì ì§ìì ê°ì§ê³ ìëì§ íìžíŽìŒ í©ëë€. :)
Ember륌 íë¡ì°íë ì¬ëì ë¹êµì ë°ì íê²(ížìí°, ì¬êž° githubìì, ë©ìŒë§ 늬ì€íž ë±) ìŽ ë¬žì ê° ì ìê² ë€ê°ìêž° ë묞ì Ember 2.10ì ìŒë¶ë¡ ì¶ìëë©Ž ë€ë¥ž ì¬ëë€ì ëëŒê² í ìë ìë€ê³ ìê°í©ëë€. í¹í ê·ž ìŽì ë ìŽì êŽë šë ì¬ì© ì€ëš ê²œê³ ë í¹í ëììŽ 3.0ê¹ì§ ì§ìë ê²ìŽëŒê³ ëª ìí©ëë€. ëë ìŽ ëììŽ Glimmer 2ìì ìëíì§ ìì ê²ìŽëŒê³ ì¬ííëë ê²ì ìŽëììë 볞 ì ìŽ ìë€ê³ ìê°í©ëë€(ëšìí ëì³€ì ìë ìì§ë§).
ìŽë Ember 2.10ì ìŒë¶ë¡ í¬íšëë ê²œì° ë€ë¥ž ì¬ëë€ì ëëŒê² í ì ìë€ê³ ìì¬í©ëë€. í¹í êŽë š ì¬ì© ì€ëš ê²œê³ ì íŽë¹ ëììŽ 3.0ê¹ì§ ì§ìëë€ë ëŽì©ìŽ ëª ìëìŽ ìêž° ë묞ì ëë€. ëë ìŽ ëììŽ Glimmer 2ìì ìëíì§ ìì ê²ìŽëŒê³ ì¬ííëë ê²ì ìŽëììë 볞 ì ìŽ ìë€ê³ ìê°í©ëë€(ëšìí ëì³€ì ìë ìì§ë§).
ë€, ì¬êž°ìì ìŒë¶ ë©ìì§/ìžë¶ ì 볎륌 ê°ì íŽìŒ í©ëë€.
ëë ìŽê²ìŽ 2.10 늎늬ì€ë¡ ë§ë€ìŽì¡ë€ê³ 볞ë€. ìŽê²ìŽ 2.10 ëŠŽëŠ¬ì€ ëžë¡ê·ž ê²ì묌ìì ìžêžë©ëê¹?
ìŽê²ì 2.10 ëžë¡ê·ž ê²ì묌ìì ìžêžëì§ ììê³ ììì ìžêží ë°ì ê°ìŽ ìŽì ì ì¬ì© ì€ëš ê²œê³ ê° 3.0ê¹ì§ ì§ìë ê²ìŽëŒê³ ìžêžíêž° ë묞ì ì 륌 ëëŒê² íìµëë€.
ìŽì ìí¥ì ë°ë ì¬ì© íšíŽìŽ ììµëë€. 묞ì ë ìŽ í¹ì ë³ê²œ ì¬íìŽ ìëëŒ ëŽ ì¬ì© íšíŽìŽìŽìŒ íì§ë§ ì¢ì ë첎 ì¬ì© íšíŽìŽ 묎ììžì§ì ëí ì견ì ë£ê³ ì¶ìµëë€!
Ʞ볞ì ìŒë¡ íí°ë§ ê°ë¥í ë°ìŽí° ì§í©ì íìíë íìŽì§ê° ììŒë©° ìŽë¥Œ ë¬ì±íêž° ìíŽ Ember ê³ì° ê°ì ì¬ì©íì¬ íìŽì§ì ì¬ë¬ 쿌늬 맀ê°ë³ì ê°ì êž°ë°ìŒë¡ ë°ìŽí°ë¥Œ íí°ë§íê³ ììµëë€. ê·žë¬ë ì못ë ì ë ¥(ì: 묞ì ëë ì«ìê° ìë)ìŽ ì¬ì©ì ì ë ¥ì 쿌늬 맀ê°ë³ìì ì¶ê°ëë ê²ì ë°©ì§íêž° ìíŽ ë€ì íšíŽìŽ ììµëë€.
filteredModel: Ember.computed('model', /*list of individual query params*/, function(){
let model = this.get('model').filterBy('pdf.pdf_path.url'); //removes all records that don't have a pdf uploaded
this.get('queryParams').forEach((filter)=> { // for each possible filter
if ((this.get(filter).length > 0)) { //if the filter has content...
//guardian pattern to prevent invalid inputs
let valid = new RegExp('^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$');
while (this.get(filter).length > 0 && !valid.test(this.get(filter))){
this.set(filter, this.get(filter).slice(0,-1));
}
//block of code where the model gets filtered
//...
//...
});
return model;
}),
ë°ëŒì Ʞ볞ì ìŒë¡ íí°ë§ë 몚ëžì 몚ìì ê³ì°í ë íí° ê°ì ì못ë 묞ìê° ììŒë©Ž ì íšíŽì§ ëê¹ì§ ë§ì§ë§ 묞ì륌 ì ê±°í©ëë€. ë구ë ì§ ìŽë¬í ì ë ¥ì ëí ì íšì± ê²ì¬ë¥Œ ìííë ë 깚ëí ë°©ë²ì ëí ì ììŽ ììµëê¹?
ìŽê²ì ëí ì°ëŠ¬ë¥Œ ëëŒê² íìµëë€. í¹í ì±ìŽ 2.9ì íšê» ì€íë ë ê²œê³ ë©ìì§ê° íìëì§ ììêž° ë묞ì ëë€. 2.10ìŒë¡ ì ê·žë ìŽëíë©Ž ìì© íë¡ê·žëšìŽ ë¡ëëì§ ìê³ ìŽ ì€ë¥ë¥Œ ì°žì¡°í©ëë€. ë€ë¥ž ì¬ëìŽ ìŽ íëì 볞 ì ìŽ ììµëê¹?
@revanar ì¬êž°ìì ìì í ë²ìŽë ì ìì§ë§ CPë ì€ì ë¡ ë ê°ì§ ë€ë¥ž ê² ê°ìµëë€. íëë íí°ë§ë 몚ëžì ë°ííê³ ë€ë¥ž íëë íí°ë¥Œ ì
ë°ìŽížíë ê²ì
ëë€. ì
ë°ìŽížíë íí° ë¶ë¶ì êŽì°° ê°ë¥ í목ìŒë¡ ì®ê¹ëë€. ëë ìŽê²ìŽ êµ¬ì± ìììŽê³ 쿌늬 ë§€ê° ë³ì륌 êµ¬ì± ììì ì ë¬íë ê²œì° ë
ŒëŠ¬ë¥Œ didReceiveAttrs
íí¬ë¡ ìŽëí©ëë€. "rerender ìì¶ì " ì€ë¥ê° ë°ìí ëŽ ê²œíì ë°ë¥Žë©Ž set
ìì
ì CPìì ì®êž°ë©Ž ì€ë¥ê° ììŽì žìŒ íë€ê³ ìê°í©ëë€.
ì°ëŠ¬ë ìŽ ë¬žì ë¡ íë ìê°ì 볎ëŽê³ ììµëë€. ë§ì 묞ì 륌 íŽê²°íì§ë§ ìŽ ì§ì ì€ëš ì€ë¥ì ëíŽ ë³Žê³ ìë í ê°ì§ ì¬ë¡ë ë¹í¹ì€ëœìµëë€.
Assertion Failed: You modified transitioningIn twice on <app<strong i="6">@component</strong>:link-to::ember1159> in a single render.
ì ë² ëŽë¶ ìì±ìŽ ë ë² ìŽì ì ë°ìŽížëìŽ ì€ë¥ê° ë°ìí ê² ê°ìµëë€. ë¶ííë ê·žê²ì ì°ëŠ¬ì ì ë ë í ì€íž ì€ì ì¬ìì°ëë¯ë¡ ëë²ê·žíêž° ìŽë µìµëë€(ì ë ë ëëŒìŽë²ë í ì€ížê° ì€íëë ëì ê°ë° ëêµ¬ê° ìëíì§ ëª»íëë¡ í©ëë€). ë¡ê·žìž íë¡ìžì€ê° ëë ë ë§ë€ìŽì§ controller.transitionToRoute ížì¶ì ëí 묞ì ì ìžì€íŽì€ë¥Œ íë ìŽì ì¶ì íì§ë§ ì¬ë¬ ìë늬ì€ìì ë°ìíë ê² ê°ìµëë€.
ìŽ ë¬žì 륌 íŽê²°íë ë°©ë²ì ì ëªšë¥Žê² ìµëë€.
@chancancode ë ìŽ ì§ì ì€ëš ì€ë¥ë¥Œ ë¹íì±ííêž° ìí êž°ë¥ íë귞륌 ìžêžíì§ë§ https://github.com/emberjs/ember.js/blob/master/FEATURES.md ìì ìŽì ëí ì 볎륌 볌 ì ììµëë€
ember 2.10 ë§ìŽê·žë ìŽì ì 겜ì°ìë ìŽê²ìŽ 죌ì 묞ì ì ì ëë€. ìŽë¬í 묞ì ë ë§ìŽ ìì íìµëë€. ìŽë¬í ì€ë¥ë¥Œ ìì íêž° ìí ëšìŒ/ëª íí ì»· ì ëµìŽ ìë ê² ê°ìµëë€. ì¬ì© ì¬ë¡ì ë°ëŒ ë€ì곌 ê°ì ì ê·Œ ë°©ìì ìëíìµëë€.
Ember.run.next
ëí ìœësetter
ìœë륌 computed properties
ìì ìëª
죌Ʞ íí¬ë¡ ìŽëíê±°ë ê°ë¥í ê²œì° event handlers
ë¡ ìŽëí©ëë€.ì°ëŠ¬ë ìŽê²ìŒë¡ ë§ì ìŽë €ìì 겪ììµëë€. ì§ë ëª ë ëì ì°ëŠ¬ë ember ë°ìŽí° ì ì¥ì ìºììì í¹ì ì íì 첫 ë²ì§ž ìì륌 ìëìŒë¡ ì ííë ìë¹í ìì ëë¡ë€ìŽì ì¶ì íìµëë€. ìŽë¡ ìžíŽ íìŽì§ì ìŒë¶ê° ëë¡ë€ìŽ ì íì ìíŽ êµ¬ëëêž° ë묞ì ë€ì ë ëë§ë©ëë€. ëë¡ë€ìŽìŽ ì¬ì©ëë ê° íìŽì§ìì 목ë¡ì 첫 ë²ì§ž í목ì ì±ì°ê³ ì ííêž° ìíŽ ëìŒí ìœë륌 ë°ë³µíê³ ì¶ì§ ìêž° ë묞ì 묎ìì íŽìŒ í ì§ ì ëªšë¥Žê² ìµëë€.
@scottmessinger íŒëë°± 죌ì ì ê°ì¬í©ëë€. êµ¬ì± ìì륌 ì¬ì©íë©Ž ꜀ ì ìëíìµëë€. ëë ìì¶ì ì€ë¥ë¥Œ ì ê±°í ì ììê³ ëŽ ìœëê° ê·žê²ì ëíŽ ìë¹í 깚ëíë€ê³ ââìê°í©ëë€.
Kris Seldenì ë€ìì ëë²ê¹ íë ë° ì ì©í íì ì ê³µí©ëë€.
ì¬êž°ìì ììží ëšê³ë¥Œ ì€ëª íìµëë€: https://github.com/GavinJoyce/backtracking/pull/1#issuecomment -266427152
ì ë ìì¶ì ì£Œì¥ ë©ìì§ ë¥Œ 2.10.2-with-improved-backtracking-assertion
ë¹ë륌 ìëŒëìµëë€.
ì ì:
ëšìŒ ë ëë§ìì <(subclass of Ember.Model):ember3486>
ìì message.message_goal.description
ë ë² ìì íìµëë€. ìŽë Ember 1.xìì ì 뢰í ì ìê³ ëë žìŒë©° ë ìŽì ì§ìëì§ ììµëë€. ììží ëŽì©ì https://github.com/emberjs/ember.js/issues/13948 ì ì°žì¡°íìžì.
íì:
ëšìŒ ë ëë§ìì <(subclass of Ember.Model):ember3486>
ìì message.message_goal.description
ë ë² ìì íìµëë€. ìŽ ë ëë§ ë component:message-edit-expanding-container-component
ë° ìì component:rules/predicate-date-value-component
. ìŽë Ember 1.xìì ì 뢰í ì ìê³ ëë žìŒë©° ë ìŽì ì§ìëì§ ììµëë€. ììží ëŽì©ì #13948ì ì°žì¡°íììì€.
ì€ë¹ê° ëêž° ì ì íŽìŒ í ìŒìŽ ëª ê°ì§ ë ìì§ë§ ììì ì¬ëë€ìŽ ì±ìì ìŽê²ì ìëíë€ë©Ž ì ë§ ì ì©í ê²ì ëë€. /cc @fivetanley , @bryanhickerson , @revanar , @phammers , @scottmessinger , @tharrington1 , @manimis902 , @jakesjews , @elwayman02 ì±ìì ìŽìì ìŽì§ ìì ìŽì€ì ë©ìì§ê° íìëë©Ž ìë €ì£Œììì€.
ê·žê²ì ìëíë €ë©Ž ë€ì곌 ê°ìŽ ember ì¢
ìì±ì í¬íšíëë¡ bower.json
륌 ì
ë°ìŽížíììì€.
{
"name": "backtracking",
"dependencies": {
"ember": "intercom/ember#2.10.2-with-improved-backtracking-assertion",
"ember-cli-shims": "0.1.3"
},
"resolutions": {
"ember": "2.10.2-with-improved-backtracking-assertion"
}
}
ìŽ ë¹ë륌 ì€ííë ìì ì í늬ìŒìŽì ì https://github.com/GavinJoyce/backtracking/pull/10 ìì 볌 ì ììµëë€.
ë°©êž 1.11.0-칎ë늬ì ë¹ë륌 ìëŒëìµëë€.
ì€íìžê°ì?
@rwjblue ê°ì¬í©ëë€, ìŽê²ì ì€íììµëë€. ì ë°ìŽížëš
@GavinJoyce ë°ì 죌ì ì ê°ì¬í©ëë€! ì°ëŠ¬ ì±ìì ìŽê²ì ìëíê³ ìŽì ë©ìì§ë³Žë€ íì€í _ë_ ì ì©í©ëë€. ì¬íê²ë ìì ëë ê²ìŒë¡ êž°ë¡ë ìì±ìŽ ì€ë¥ ë©ìì§ì íìë ë ìì¹ ëªšëìì ëª ë°±íê² ìì ëì§ ììêž° ë묞ì ì¬ì í ìŽ ë¬žì 륌 ìì íë ê²ìŽ ë§€ì° ìœì§ë ììµëë€. ì ê·žë°ì§ë ì ëªšë¥Žê² ì§ë§ ëŽë ìë ì¢ ë ììží ìì볎ëë¡ íê² ìµëë€.
@Dhaulagiri êŽì¬ìŽ ììží ìì
FWIW ìŽì êŽë šë ë ë€ë¥ž 묞ì 륌 ì°Ÿììµëë€. https://github.com/alexspeller/ember-cli-active-link-wrapper/issues/25
ëí í 컚ížë¡€ì ember-paperë¡ ê°ì žì€ë €ë ì§ìì ìž ë žë ¥ìì ë²ê·žë¥Œ ì°ŸìŒë €ê³ í ë @GavinJoyce ì ë¶êž°ë¥Œ ìëíìµëë€(ìì PR ì°žì¡°). ë¶ííë ì 겜ì°ìë êŽë šëì§ ìì ê²ìŒë¡ 볎ìŽë êµ¬ì± ììì ëí ì°žì¡°ë ì»ë ê² ê°ìµëë€.
@bjornharrtell ìë í ì ìë ember-paper ëžëì¹ê° ììµëê¹?
^ ember-paper 묞ì (https://github.com/miguelcobain/ember-paper/pull/590)ì ëíŽ ìì볎ë ìê°ì ê°ì¡ìµëë€. ê·žê²ì 볎ìžë€:
{{yield}}
ê° í¬íšë êµ¬ì± ììë ì ì©í ìì€ë¡ ë³Žê³ ëìì§ë§ ê°ë¥í í ì ì©íì§ ìì)ì ëìšì ë²ê·žìŒ ìë ìê³ ìë ìë ìì§ë§ https://github.com/DockYard/ember-one-way-controls/issues/136 ìì ìŽ ì€ë¥ê° ë°ìíìµëë€.
묞ì 륌 ì°Ÿììµëë€.
íŒí©ë 컚ížë¡€ë¬ì ëíŽ ëìŒí ìì±ì ì
ë°ìŽížíêž° ìíŽ ì§ì
ì ìŽ ìë 믹ì€ìžì ì¬ì©íê³ ììµëë€. ìŽë€ì ëšìí ë€ë¥ž 컚ížë¡€ë¬ì ìíê³ ìŽì€ì
ìŽ ì€íšíê³ js륌 ì°šëšíêž° ë묞ì ë¶ëª
í ë€ë¥ž ìì±ì
ëë€.
ëë mixinì ëª ê°ì 컚ížë¡€ë¬ë¡ íìŽì í
ì€ížíê³ ì¬ìì°í ê²œë¡ ì¬ìŽë¥Œ ì ííìµëë€. ì¬ìì°ëì§ ìììµëë€.
ì§êžì 믹ì€ìžì ì ê±°íë €ê³ íë¯ë¡ ê°ëší 죜ìŽê³ íŽê²° ë°©ë²ì ë§ë€ ê²ì ëë€.
ìŽ ì¬ë ëë§ ë¬žì ê° ë°ìíë ì íší ì¬ì© ì¬ë¡ê° ìë€ê³ ìê°í©ëë€. ì±ìë ìŒë¶ ìí(íìž, íìž, ê²œê³ , ì€ë¥)ê° í¬íšë ë²íŒìŽ ììµëë€. íì¬ ìí륌 íìíê³ í¹ì ìŒìŽ ë°ìíì ë ì íšì±ì ê²ì¬íë©° ì íšì± ê²ì¬ ëë íì±í 결곌ì ë°ëŒ ë€ë¥ž í목(ì€íŒë, ë€ë¥ž ë²íŒ í ì€íž, ë€ë¥ž ë²íŒ íŽëì€)ì íìíë êµ¬ì± ììì ëë€.
init()
ì ëí ê²ìŠì íìžíê³ ê²ìŠ ìëµì ë°ëŒ ì ì í ë²íŒ ìí륌 ì€ì í©ëë€. ë²íŒ íŽëì€ë ë²íŒ ìíì ë°ëŒ ì ì í íŽëì€ë¥Œ ì€ì íë ê³ì°ë ìì±ì
ëë€. ìŽêž°í ì ë°ìíë¯ë¡ ìžì€íŽì€í ì ok ìíë¡ ììí ë€ì ìëµì êž°ë°ìŒë¡ ë²ì ë° ìµì¢
ìíì ì íšì±ì ê²ì¬í ë ì íšì± ê²ì¬ë¡ ì ííêž° ë묞ì ìŽ ì€ë¥ê° ížëŠ¬ê±°ëë ê² ê°ìµëë€. ê·žë¬ë ì¬ì© ì¬ë¡ ìì²Žê° í©ëŠ¬ì ìŒë¡ 볎ìŽêž° ë묞ì ë°ìíë ìí ë³ê²œë í©ëŠ¬ì ìŒë¡ 볎ì
ëë€.
@tundal45 ê° ì못ë ì€ë¥ëŒê³ ìê°íë ê²ì 볎ì¬ì£Œë twiddle ëë ìí ì±ì ë§ë€ ì ììµëê¹?
@ Blackening999 @tundal45 ì¬ì© ì¬ë¡ 륌 twiddleë¡ ì€ìŒ ì ììµëê¹?
@chancancode @ Blackening999 ì¡°ë§ê° ì¬êž°ì ì¬ëŠ¬ëë¡ íê² ìµëë€. ë¹ ë¥ž ìëµì ê°ì¬ë늜ëë€.
@chancancode https://ember-twiddle.com/936d549b5625b0cf4f3c945d0ed04d3b?openFiles=components.button-with-state.js ë twiddle ìŽì§ë§ ì±ìì ë³Žê³ ìë ì€ë¥ê° íìëì§ ììŒë¯ë¡ ë€ë¥ž 묞ì ìŒ ì ììµëë€. ììžìŽ ë©ëë€.
ì¬ë¬ ê³ì°ë ìì±ìì ìŽê²ì ë³Žê³ ììŒë©° ê·ž ì€ íëë ê°ëší Ember.computed.or
ì
ëë€. ìŽ ê²œì° @manimis902 ì ì ììŽ ì ì©ëì§
ìŽ êž°ë¥ì ëí íëê·žê° @chancancodeì ìíŽ ìžêž tharrington1 ìžêž
íëê·žê° ì¡Žì¬íì§ ìëë€ë ê²ì ìë í @cbou
ìŽë¬í ì§ì ì€ëš ì늌ì ì²ëŠ¬íë ë°©ë²ì ìì í íì íì§ ëª»íê³ ìì ì¬íìŽ ì íšíì§ íì í ì ììì§ë§ init()
êµ¬ì± ìì íí¬ìì AJAX ìì²ì ìííì¬ ë€ë¥ž ìë¹ì€ ìì±(ì격 ìë²ì ì¡ìžì€íë ê²œì° ì¶ì /íì).
ëŽ AJAX ìì² ìœë륌 init()
êµ¬ì± ìì íí¬ìì didRender()
êµ¬ì± ìì íí¬ë¡ ìŽëíìŒë©° ì¬ì© ì€ëš ì늌ì íŽê²°í ê² ê°ìµëë€.
@lvl99 ì ë ê·žë¬ìŽì.
ì°ëŠ¬ë ìí°íëŒìŽìŠ íë¡ì ížë¥Œ 2.3ìì Ember 2.12ë¡ ì ê·žë ìŽëíêž° ìíŽ ìŽì¬í ë žë ¥íê³ ììµëë€. ì°ëŠ¬ íë¡ì ížìë ì íšì± ê²ì¬ ì¶ê° êž°ë¥ê³Œ ë³ëì ìì êµ¬ì± ìì ì¶ê° êž°ë¥ìŽ ììµëë€. ì íšì± ê²ì¬ ì¶ê° êž°ë¥ì Ember.componentsìì ìëíì¬ ì íšì± ê²ì¬ ì€ë¥ë¥Œ ìì±íê³ ìì êµ¬ì± ìì ì¶ê° êž°ë¥ì ëì°ë¯žë¥Œ íµíŽ ì íšì± ê²ì¬ ì¶ê° êž°ë¥ì ìíŽ ìì±ë ì€ë¥ë¥Œ íìí©ëë€. ì ëìšì ìì€ ìœë륌 ê³µì íêž°ìë ë묎 ë³µì¡í©ëë€. ë°ëŒì ì°ëŠ¬ë ì°ëŠ¬ê° ì§ë©Ží ì¬ë¡ë¥Œ ì€ëª íêž° ìíŽ ë€ì곌 ê°ì íì ì ë§ë€ììµëë€.
죌ìŽì§ ìì ìë ì첎 ì íšì± ê²ì¬ ì€ë¥ë¥Œ ìì±íë ë ê°ì êµ¬ì± ìì( person-detail
ë° address-detail
)ê° í¬íšëìŽ ììµëë€. address-detail
ìíŽ ìì±ë ì íšì± ê²ì¬ ì€ë¥ë errors
ê³ì° ìì± ëŽìì ë°ìë ìì
ì íµíŽ í¬íš êµ¬ì± ìì( person-detail
)ì ê³ëšììŒë¡ ì°ê²°ë©ëë€. ê° êµ¬ì± ìììì ìì±ë ì€ë¥ë error-formatter
ëì°ë¯žì ëììŒë¡ error-displayer
êµ¬ì± ìì ëŽì íìë©ëë€. ì ê³µë ìœëë 볎ìë ë°ì ê°ìŽ ììëë¡ ìëí©ëë€.
íì§ë§; ë€ì곌 ê°ì ì¬ì© ì€ëš ê²œê³ ê° ììµëë€. DEPRECATION: The
error property of
is an
Ember.Binding connected to
validatable.errors.name , but
Ember.Binding is deprecated. Consider using an
alias computed property instead. [deprecation id: ember-metal.binding] See http://emberjs.com/deprecations/v2.x#toc_ember-binding for more details.
ìŽë¥Œ íŒíêž° ìíŽ; error-formatter
ëì°ë¯žë¡ ìŽëíì¬ 9ë² ì€ì 죌ì ì²ëŠ¬íê³ 8ë² ì€ì 죌ì ì²ëŠ¬ë¥Œ ì ê±°íì¬ ê²œê³ ì€ëª
ìì ì ìí ëë¡ íëë¡ í©ëë€.
ìŽì ì
ëª
ëì Assertion Failed: You modified "error" twice on <Ember.Object:ember338> in a single render. It was rendered in "component:error-displayer" and modified in "component:error-displayer". This was unreliable and slow in Ember 1.x and is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.
ëë¬íìµëë€. ìŽ ì€ë¥ê° ë°ìíë ìŽì 륌 ìŽíŽí©ëë€. ì¡ì
ëŽì ížëŠ¬ê±° ë묞ì address-detail
S errors
ì¬ ê³ì°ìì ê³ì° ìì± ê²°ê³Œ errors
ê³ì°ì ìì± person-detail
ìŽë¯ž ë ëë§ ë° ì»ší
ìž ì€ë¥ë¥Œ ìŒìŒí€ë . ì°ëŠ¬ê° ë°°ì°ê³ ì¶ì ê²ì ë€ì곌 ê°ìµëë€.
Ember.Binding
vs Ember.computed.alias
ë ì¬ê³ì°(ì¬ë ëë§) ëšê³ìì íì€í ë€ë¥Žê² ìëí©ëë€. ì íí ì°šìŽì ì 묎ìì
ëê¹? íì륌 첫 ë²ì§ž ê²ì ë첎íë ê²ìŒë¡ ì ìíë ê²ì ìœë륌 깚ë ê²ì²ëŒ 볎ì
ëë€. ì ìŽë ì°ëŠ¬ì 겜ì°ìë.Ember.run.scheduleOnce('afterRender', ...)
묞ìŒë¡ ëí ìì
ížëŠ¬ê±°ë¥Œ ê³ ë €íê³ ììµëë€. ìŽê²ìŽ ì¬ë°ë¥ž êžžì
ëê¹?FWIW, ìŒë¶ 겜ì°ì ììíë ê²ë³Žë€ ë ì죌 ëŽ êµ¬ì± ììê° ë€ì ë ëë§ëë ê²ì 볎ììµëë€. ì¬ë ëë§ì ììžì ì¶ì íë ê²ì ì¢ ì¢ ë°ë£šíì ëêž°íëêž° ë묞ì ìê°ìŽ ë§ìŽ 걞늜ëë€. ìŽ ììì ë°ë¡ ê°êž°ë ëë²ê¹ ížëŠìŽ ìëì§ ìê³ ì¶ìµëë€.
ëë²ê·ž ë¹ëìì ìŽ ì£Œì¥ì í¬ì°©íê±°ë ìµì íë ë°©ë²ìŽ ììµëê¹? ì°ëŠ¬ë ëë¶ë¶ì ì¥ììì ììì ì€ëª í ëë¡ ëŠ¬í©í°ë§ì íµíŽ ìŽë¥Œ ì¶ì íê³ ìì íì§ë§, ë€ì ìê³ í 1 ëë 2ê°ê° ììµëë€. í¹ì í 겜ì°ì ì°ëŠ¬ë ê°ì²Žë¥Œ íꎎí ë€ì ì íí©ëë€. íꎎë ê°ì²Ž(ì í¬ APIìì)ë ì¬ë¬ ê°ì²Žë¥Œ ìžë¡ë/íêž°íëŒë ížì ì늌ì 볎ë ëë€.
íë¡ëì ë¹ëìì ì¬ë ëë§ì 묞ì ê° ëì§ ììµëë€. ìëíë©Ž ì°ëŠ¬ë ì€ëžì ížë¥Œ íꎎí ë€ì ìŽìšë ì ííêž° ë묞ì ëë€(ê·žëì ì 첎 겜ë¡ê° ëìŽì§ê³ ìì). ê·žë¬ë dev ë¹ëì ëí 죌ì¥ì ì¬ìŽížë¥Œ ë³µìíêž° ìíŽ ìë¡ ê³ ì¹šìŽ íìíêž° ë묞ì ìë¹í ì€ë§ì€ëœìµëë€. ì€ë¥ê° ë°ìíë ìŽì 륌 ìŽíŽíì§ë§ ìŽ ê²œì° ì€ë¥ë¥Œ íŒíêž° ìíŽ ìë¹í ë³µì¡í 늬í©í°ë§ì ìííë©° ìŽë€ 겜ì°ìë ì 첎 겜ë¡ê° íꎎëêž° ë묞ì 묞ì ê° ëì§ ììµëë€. ìŽê²ì ê²œê³ ë¡ í¬ì°©/ìµì /ë³ê²œíë ë°©ë²ìŽ ììµëê¹? try/catchì 겜ë¡ì ì€ë¥ ì²ëŠ¬êž°ë¥Œ ìëíì§ë§ ë ë€ ì ííì§ ìììµëë€.
@feanor07 ëŽë¶ìì ìŽë¯ž ë ëë§ë ìì±ì 묎íšííë ìì ì 볎ëŽë ê²ì ë°ìŽí° ìë¥ì ëë€. ì£Œêž°ê° ìë ë°ìžë©ìŽ ê°ì§íê³ ìëìŒë¡ ì¹ìë¡ ì ë°©í¥ì ì ííêž° ì ì, ê·žë¬ë ìŽê²ìŽ íµê³Œíë©Ž í° ë¹ì©ìŽ ë°ìí©ëë€. ì¬ë¬ ê°ì§ë¥Œ íê³ ê·ŒììŒë¡ ë€ì íëŠ ëë€.
Ʞ볞ì ìŒë¡ ìí ì¢ ìì±ìŽ ìê³ ë°ìŽí°ê° ìëë¡ íë¬ìŒ í©ëë€. ì íšì± ê²ì¬ë¥Œ ì€ííêž° ì ì ì€ë¥ë¥Œ ë ëë§íì§ ë§ììì€. 몚ëžê³Œ ì€ë¥ë¥Œ ìì±íë ìì êµ¬ì± ìììì ì íšì±ì ê²ì¬íì¬ íŽë¹ ëžë¡ ëŽë¶ì ììì ë ëë§í ì ììµëë€.
@ feanor07 Ember.run.scheduleOnce...
ìëíì§ë§ íë ì¶ê°íì§ ììë€ Ember.run.schedule("afterRender", () => { ... });
ì¬ì°ì set
첫 ë²ì§ž ì€í ì¶ì ì ìíŽ íì ìŽêž° í í ê³ëšì ë§ì ì€ë¥ ë©ìì§ë¥Œ ì ê±°.
@neilthawani ë ì€ë¥ë¥Œ ìšêžž ì ìì§ë§ ë°ëì 묞ì 륌 íŽê²°íì§ë ììµëë€. ìŽ ì€ë¥ë ê°ì í ë²ë§ ì€ì íŽìŒ í ë ê°ì ë ë² ì€ì íê³ ììì ëíë
ëë€. ì€ íë ë£ìŽ set
ì schedule
ê° ë€ë¥ž runloopìì ë°ì ìëë¡, ë¹ì ì ëšì§ ë ë²ì§ž ìžížë¥Œ ì§ì°íê³ ììµëë€. í ë²ë§ ë ëë§íŽìŒ í ë ë ë² ë ëë§íë íµì¬ 묞ì 륌 ìì íì§ ìê³ Emberê° ë¬žì ê° ìë€ë ì¬ì€ì ìì§ ëª»íê² ìììµëë€. ìŽì ë ëë§ìŽ ë³ëì ë°ë£šíìì ë°ìíêž° ë묞ì
ëë€.
@elwayman02 ì€ì€. ê°ì¬ íŽì. Ʞ볞ì ìŒë¡ ìì ì ìì í ëì³€ìµëë€.
ížì§: ê³ ì¬ ëì ëŽê° íží ê²ë³Žë€ afterRenders
ëª ê°ë¥Œ ë ìœì
íìµëë€. íŽíì í êžíë ë°ìŽí° ë¹ì£ŒìŒëŠ¬ì ìŽì
êµ¬ì± ìì ì€ íëì click
ì²ëŠ¬êž°ê° ììµëë€. ì€ì isDisplaying
ëŽ íëê·ž Ember.run.schedule("afterRender", () => { ... });
ì°ëŠ¬ê° ì€ì ë¡ ë°ìŽí° ìŠ êµ¬ì± ììì ë구 ì€ëª
êµ¬ì± ìì 몚ë륌 ížì¶ 컚ížë¡€ë¬ì ëëììŽìë€ ì§ì§ 묞ì 륌 ëë²ê¹
í ì ììµëë€.
tl;dr: ëë ê·žê²ì ê±°êž°ì ëì§ ììì§ë§(íë²ë Maximum call stack size exceeded
ì€ë¥ê° ë°ìíìµëë€), ì€ì 묞ì ê° ë°íì§ ëê¹ì§ ê·žê²ì ì¬ì©íë ê²ìŽ ëë²ê¹
ì ëììŽ ëììµëë€.
ë°©êž ì ê·žë ìŽë ì€ìž ë€ë¥ž ì¬ëì ìí PSA: ìì @GavinJoyce ê° ìžêží ê°ì ë "ìì¶ì ì¬ë ëë§" ì£Œì¥ ì€ë¥ë ì€ì ë¡ Ember 2.11ì í¬íš ëìŽ ììµëë€. ëí 2.11ë¡ ë°ë¡ ìŽëíë ê²ìŽ ëììŽ ë ì ìë€ê³ ì ì ëììµëë€.
ì¬ë¬ë¶, ëììŽ íìí©ëë€. ìŽ ì€ë¥ë ë€ë¥ž ìì±ì "ììë" ëªšëž ìì±ì ì¬ì©íë €ê³ í ë ëíë©ëë€. ëë ë¹ íë¡ì ížë¥Œ ë§ë€ìê³ ì¬ì í ê°ì ê²ì 볎ì¬ì€ëë€. ëŽê° 묎ìì ì못íê³ ìì§?
ëí ë°±ìëìì JSON API .Net Core(https://github.com/Research-Institute/json-api-dotnet-core)ì íšê» .Net Core륌 ì¬ì©íê³ ììµëë€.
ìŽ ìì ìì UI ë ëë§ìŽ 깚ì¡ì§ë§ ë°ìŽí°ê° ë¡ëëê³ ìíë ê°ì 볌 ì ììµëë€.
// Profile Model:
import DS from 'ember-data';
export default DS.Model.extend({
'firstName': DS.attr(),
'lastName': DS.attr(),
'applicationUser': DS.attr(),
'contactProfile': DS.belongsTo('address', {
async: true
}),
'companyProfile': DS.belongsTo('address'),
'companyMailingAddress': DS.belongsTo('address'),
"companyPhysicalAddress": DS.belongsTo('address')
});
// Address Model:
import DS from 'ember-data';
export default DS.Model.extend({
'address1': DS.attr(),
'address2': DS.attr(),
'city': DS.attr(),
'state': DS.attr(),
'zipCode': DS.attr(),
'country': DS.attr(),
'website': DS.attr(),
'phoneNumber1': DS.attr(),
'phoneExtension1': DS.attr(),
'phoneNumber2': DS.attr(),
'phoneExtension2': DS.attr(),
'email': DS.attr(),
});
// Adapter settings
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
namespace: 'api/json',
});
DS.JSONAPISerializer.reopen({
keyForAttribute(key) {
return key;
},
keyForRelationship(key) {
return key;
}
});
// Route
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
profile: this.store.findRecord('profile', 1)
});
}
});
// Template
{{model.profile.contactProfile.address1}}
ê·žëŠ¬ê³ ëŽê° ì»ë ì€ë¥ :
ìŽì€ì
ì€íš: "model.profile.contactProfile"ì ë ë² ìì íìµëë€.
ì¶ì : ìì±ì ê°ì žì€êž° ìíŽ Ember.computed ë©ìë륌 ì¬ì©íŽ 볎ìëë° íšê³Œê° ìë ê² ê°ìµëë€. ìŽê²ì íìì ëê¹?
ì ë°ìŽíž: ë°ìŽí°ê° {{#each}} ëì°ë¯ž ëŽë¶ììë ì ëë¡ ë¡ëëì§ë§ í í늿ììë ì§ì ë¡ëëì§ ìëë€ë ê²ë ë°ê²¬íìµëë€.
@lbarsukov
ìë§ë links
ìì±ìŽ ì€ì ë jsonapi ìëµì êŽê³ë¡ ìžíŽ ìì¶ì ì¬ë ëë§ìŽ ë°ìíë https://github.com/emberjs/data/issues/5023 곌 êŽë šìŽ ìì ì
ìŽê²ì Ember Data 2.13.2 ìŽíì ììë 묞ì ììµëë€. ember-data: 2.13.2륌 ì¬ì©íì¬ ë¬žì ê° íŽê²°ëëì§ íìžíììì€.
@daniel-de-wit ì¬êž° ë§ì€í°ìê² ìì§ìê°ëœì ì¹ìŒìžì°ììì€. ìŽê²ì ì€ì ë¡ ìëí©ëë€. ê·žê²ì ì§êž ëŽê° ê·žê²ì ë§ì¡±íë ë° íìí ìŒì í©ëë€.
@lbarsukov @daniel-de-wit ìŽ ë¬žì 륌 íŽê²°íë ì ë²ì ì ì ë² ë°ìŽí° 륌 ì¶ìíìµëë€.
@lbarsukov ëë ìŽê²ìŽ ë¹ì ìŽ ì ìí êŽê³ì êŽë šìŽ ìë€ê³ ìê°í©ëë€. belongsTo
ì€ íë(ëë ìŒë¶)ê° hasMany
ìŒ ê°ë¥ì±ìŽ ëìµëë€.
ì§ë¬žê³Œ ëµë³ìŽëŒë ë ê°ì§ 몚ëžìŽ ìë€ê³ ê°ì íŽ ë³Žê² ìµëë€. ì§ë¬žì ëí 10ê°ì ëµë³ì ë°ííì§ë§ ê° ì§ë¬ž ì§ë ¬ ë³íêž°ê° íŽë¹ ëµë³ì ì°žì¡°íë ê²œì° êŽê³ë¥Œ ì¬ë°ë¥Žê² ì ìíŽìŒ _íŽìŒ í©ëë€_.
// Question Model:
export default DS.Model.extend({
'answers': DS.hasMany('answers'), // if you never reference question.answers you can omit this
...
});
// Answer Model:
export default DS.Model.extend({
'question': DS.belongsTo('question'),
...
});
ë°ìŽí°ê° ì¬ë¬ ì§ë¬ž/ëµë³ ìì ì ìíê³ ìë ê²œì° 1-1 êŽê³ë¥Œ ììíë ê²œì° ë ëë§ ì€ê°ì ì§ë¬žìŽ ìì ëìë€ê³ ì¶ë¡ í©ëë€.
ìŽêž° ê²ì묌ìì ëª ê°ì§ íí¬ê° ìžêžëììµëë€.
ìŽê²ì ë§€ì° ê·¹ëšì ìž ììŽì§ë§ 묞ì 륌 볎ì¬ì€ëë€. init ìžìë didInitAttrs, didReceiveAttrs, willInsertElement ë° willRenderë ë ëë§ íë¡ìžì€ ì€ì ëêž°ì ìŒë¡ ë°ìí©ëë€. ëí ìì¶ì ì ì¢ ì¢ ìë°©í¥ ë°ìžë© ìì±ì ëììŒë¡ ìžíŽ ë°ìíë 묞ì ì ëë€.
didInsertElement
ë° didRender
íí¬ë ë§€ë ¥ì²ëŒ ìëíì§ë§ ë€ë¥ž íí¬ë twice render
ì€ë¥ì íšê» ì€íšíë ìŽì ë 묎ìì
ëê¹?
@BenjaminHorn @ Blackening999 @Dhaulagiri @DingoEatingFuzz @ Gaurav0 @GavinJoyce @Redsandro @TRMW @ Turbo87 @aklkv @alidcastano @backspace @bdiz @bgentry @bjornharrtell @bryanhickerson @buschtoens @caseklim @cbou @chancancode @danaoira @ ë€ëì ë ìíž @fivetanley @fotinakis @gabrielgrant @ghost @jakesjews @janmisek @joukevandermaas ìŽê²ì ì¬ì í ââ묞ì ì ëë€. ìë§ë ì°ëŠ¬ë ë«ììŒ í ê² ê°ìµëë€. ìŽë»ê² ìê°íìëê¹?
ëŽ ì±ì ì€ë¥ ìžì€íŽì€ë¥Œ ìì íìµëë€.
ìŽë° ìŒìŽ ìì ëë§ë€ ë€ìë ìŽë° ìŒìŽ ë°ìíì§ ìëë¡ ì 늬í ì ìììŒë¯ë¡ ë«ìë êŽì°®ë€ê³ ìê°í©ëë€.
ì, ë«ìŒììì€.
ìëì ë ð¬
ð
ì€ëë 묞ì 륌 ì êž°íŽì ì£ì¡í©ëë€.
ì륌 ë€ìŽ ëŽê° ë ëë§íê³ ìë€ê³ ê°ì íŽ ë³Žê² ìµëë€.
{{this.myBool}}
ì€ë¥ë Error: Assertion Failed: You modified "myBool" twice
ë€ì곌 ê°ìŽ ë³ê²œíì¬ ì€ë¥ë¥Œ ìì í ì ììµëë€.
{{if this.myBool true false}}
ë§ì°¬ê°ì§ë¡ íŽëì€ ìŽëŠ ë°ìžë©ìŽ 묞ì 륌 ìŒìŒí€ë 겜ì°
ëë ë°ê¿ ì ìë€:
classNameBindings: ['myBool']
ìê²
classNameBindings: ['myBool:yes:no']
ëŽê° ìŽë° ê²œê³ ë¥Œ ì ì íê² í ì ìë€ë©Ž ì Emberë ë륌 ëì íŽ ì²ëŠ¬í ì ììµëê¹?
ë€ìì ëŽê° ì¬ì©í ë°ëªš ìœëì ëë€.
ê·ž ìŽë€ ê²ë 묞ì 륌 "íŽê²°"íì§ ëª»í©ëë€. íë¡ëì 몚ëë¡ ì ííê±°ë ìŽì€ì /íì§ ìœëì ë²ê·žê° ììµëë€. ìŽìšë ê°ì ì¬ì©íë ìªœìŽ ìëëŒ ê°ì í ë¹/ì€ì íë 쪜ì ìì íŽìŒ í©ëë€.
íìž. ê°ì¬í©ëë€. ëª
ìì ìž set
ê° ìêž° ë묞ì ìŽ ì볞 ê²ì묌ì ì€ëª
ë ìì¶ì 묞ì 륌 ìŽíŽí©ëë€.
ê·žë¬ë ëŽ ë°ëªš twiddleìë ëŽê° 볌 ììë í set
ê° ììµëë€.
_Edit_ ì못 ëììµëë€. ì ììì ê°ìŽ í
í늿ì _subsequent_ ë¶ë¶ìì set
ëì€ì§ ìëë€ë ë§ì
ëë€.
í , íì ìì ì€ë¥ê° ë°ìíì§ ììµëë€. íŽëŠ ììë ìŽë»ê² íŽìŒ í©ëê¹?
ìŽêž°ë¥Œ íŽëŠí ë€ì ë«êž°ë¥Œ íŽëŠí©ëë€. ê·žë¬ë ë¶ëªšê° ìë ì°ì¶ë ìì êµ¬ì± ììì ë«êž° ë²íŒì ëë€.
묞ì ë ë¶íŽ ì€ì ìŽë¯ž ë ëë§ë ìì±ìì set
륌 ížì¶íë êµ¬ì± ìììì focusOut
ê° ížì¶ëë€ë ê²ì
ëë€. êµ¬ì± ììê° ìŽë»ê² ìŽì 곌 íìŽë° ì믞륌 ìëì§ 100% íì í ì ììµëë€. ìëí ë³íìŽ ì¶ì ìì€í
ì íŒëì€ëœê² ë§ë€ê³ 귌볞ì ìž ë¬žì 륌 ìíí ê²ìŽëŒê³ íì í©ëë€. ìë¡ìŽ 묞ì ìì ìŽê²ì ì¶ì íŽ ë³Œê¹ì? ì íší 묞ì ìžì§ íì€íì§ ìì§ë§ ê±°êž°ì ì¡°ì¬ë¥Œ í©ìë€.
ê°ì¥ ì ì©í ëêž
ìŽê²ì 2.10 ëžë¡ê·ž ê²ì묌ìì ìžêžëì§ ììê³ ììì ìžêží ë°ì ê°ìŽ ìŽì ì ì¬ì© ì€ëš ê²œê³ ê° 3.0ê¹ì§ ì§ìë ê²ìŽëŒê³ ìžêžíêž° ë묞ì ì 륌 ëëŒê² íìµëë€.