çŸåšãäºæã¢ãŒãã®Embroiderã¯ãæ°ããã¢ããªã±ãŒã·ã§ã³ãå€ãã®æ¢åã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã splitAtRoutes
ã¢ãŒãã®å©ç¹ãåŸãã«ã¯ã staticComponents
ã¢ãŒãã§Embroiderã䜿çšããã®ãããå°é£ã§ãã
Embroiderãªããžããªã®IssueïŒ501ã¯ãEmber.jsãªãªãŒã¹ã®äžéšãšããŠEmbroiderãå®å®ãããããã«å¿ èŠãªæ®ãã®åé¡ã远跡ããŸãã
ãã®åé¡ã¯ãã«ãŒãããŒã¹ã®ã³ãŒãåå²ïŒãEmbroiderreadinessãïŒã§ãµããŒãããããªãã·ã§ã³ãšããŠãEmber withEmbroiderãå®éã«äœ¿çšããåã«å®è¡ããå¿ èŠã®ããæé ã远跡ããŸãã Embroiderã䜿çšããããã®ãã现ããæ¹æ³ã¯ãããããããŸããïŒå ·äœçãªã¡ãªããã¯ã»ãšãã©ãããŸããããEmberèªäœãããã©ã«ãã§Embroiderã«ç§»è¡ããããã«éèŠãªäºæã¢ãŒããå«ãïŒããã®åé¡ã¯ãéåžžã®Emberã¢ããªã±ãŒã·ã§ã³ã§Embroiderã䜿çšããŠã¡ãªãããåŸãæ©èœã«çŠç¹ãåœãŠãŠããŸããã«ãŒãããŒã¹ã®ã³ãŒãåå²ããã
Embroider READMEã§èª¬æãããŠããããã«ãã«ãŒãããŒã¹ã®ã³ãŒãåå²ïŒ splitAtRoutes
ïŒãæå¹ã«ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã次ã®ãã©ã°ãæå¹ã«ã§ããå¿
èŠããããŸãã
staticAddonTestSupportTrees
staticAddonTrees
staticHelpers
staticComponents
ã¢ããªã³ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ããããã®ãã©ã°ã®ååšäžã§æ©èœããªãå Žåããããã¯ãå€å žçãªåçæ©èœãã䜿çšããŠããŸãã
(component dynamicString)
å»æ¢ããŠçœ®ãæããŸãEmbroiderã®æºåã®æåã®ã¿ãŒã²ããïŒãMVPãïŒã§ã¯ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§éçãã©ã°ãæå¹ã«ããããšãããšãã«èŠã€ãã£ãæãäžè¬çãªé害ãåãé€ãå¿ èŠããããŸãã
MVPãã€ã«ã¹ããŒã³ã®å Žåããããã®ãã©ã°ããµããŒããããã¹ãŠã®ãšã³ã·ã¹ãã ã¢ããªã³ã«ãšã£ãŠã¯ç®æšã§ã¯ãã
代ããã«ãã¢ããªã±ãŒã·ã§ã³ãsplitAtRoutes
ãžã®åççãªç§»è¡ãã¹ãæã¡ããã®ã¢ãŒãã§å®è³ªçã§éèŠãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ããããšãç®æšã§ãã ã€ãŸããããã©ã«ãã®ãã«ãŒããªã³ãã«å«ãŸãããã¹ãŠã®ã¢ããªã³ã¯ãåŸæ¥ã®åçæ©èœãã移è¡ãããŠããå¿
èŠããããŸãã ãŸããEmberã®åæå®è¡ãªã©ãå®éã®ã¢ããªã±ãŒã·ã§ã³ã§é »ç¹ã«äœ¿çšãããã¢ããªã³ã¯ãåŸæ¥ã®åçæ©èœã䜿çšããŠã¯ãªããªãããšãæå³ããŸãã
staticComponents
ããã¯æãéèŠãªéçãã©ã°ã§ããããã®èŠä»¶ã¯MVPã¿ãŒã²ããã«æã倧ããªé害ããããããŸãã
staticComponents
ãæå¹ã«ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ïŒãã®ã¢ããªã³ãå«ãïŒã§(component dynamicString)
ããã¹ãŠäœ¿çšããªãããã«ããå¿
èŠããããŸãã
éèŠãªã®ã¯ãã¢ããªã±ãŒã·ã§ã³ãšãã®ã¢ããªã³ãstaticComponents
ã¢ãŒãã§(component "static string")
ã䜿çšã§ããããšã§ãã
å®éã«ã¯ãããã¯ã次ã®ãããªãã¿ãŒã³ãã移è¡ããå¿ èŠãããããšãæå³ã
{{#let (component this.componentName) as | Component |}}
çŸåšãããªãã¯APIã®äžéšãšããŠæååãååŸããŠããã¢ããªã³ã¯ã代ããã«ã³ã³ããŒãã³ããååŸããå¿ èŠããããŸããã€ãŸãããã®ã¢ããªã³ã¯ãæååã§ã¯ãªããåŒã³åºãã³ã³ããŒãã³ãããŠãŒã¶ãŒãæäŸããå¿ èŠãããã¢ãããŒãã«ç§»è¡ããå¿ èŠããããŸãã
this.component
ã¯this.componentName = <code i="29">scaffolding/${dasherize(csId!)}/${dasherize(this.args.feature)}</code>
ãšããŠå®çŸ©ãããŠãããããããã¯ç¹ã«åä»ãªç¶æ³ã§ãã ãã®ãããªç¶æ³ãããã移è¡æŠç¥ãæ€èšããæ éã«å±éããå¿ èŠãããçç±ã§ãã
å°ãªããšããã¢ããªã³ã(component dynamicString)
ãã移è¡ã§ããããã«ããã«ã¯ãåçã³ã³ããŒãã³ãã®åŒã³åºããèš±å¯ããªãæ°ããããŒãžã§ã³ã®component
ããŒã¯ãŒããäœæããå¿
èŠããããŸãã
ããã«ãå±±ãã£ãæ§æã䜿çšããã³ã³ããŒãã³ãã®åŒã³åºããåçãªcomponent
ããŒã¯ãŒããšåãããã«æ©èœããããšã誀ã£ãŠèš±å¯ãããã°ãä¿®æ£ããå¿
èŠããããŸãã 人ã
ã(component dynamic)
ãã移è¡ããããšãããšã誀ã£ãŠ<dynamic>
ã«ç§»è¡ãããããæ©èœããããšã確èªããŠå
ã«é²ãå¯èœæ§ãé«ããããããã¯ããã«è¡ãå¿
èŠããããŸãã
ã¢ã¯ã·ã§ã³ã¢ã€ãã ïŒ
(component)
æ°ããããŒãžã§ã³ãèšèšããã³ãªãªãŒã¹ããŸãïŒRFCãå¿
èŠïŒstaticHelpers
staticHelpers
ãã©ã°ã¯ãEmberãã³ãã¬ãŒãã®è¡šçŸåãäœäžãããŸããããã¢ããªã±ãŒã·ã§ã³ã®ãã«ããŒã®ãªã¹ãå
šäœãããŒããŒã®ã¢ãžã¥ãŒã«ã®ã»ããã§å©çšã§ããªãããšãæå³ããŸãã
ããã¯Emberã¢ããªã±ãŒã·ã§ã³ã«é倧ãªåœ±é¿ãäžãããšæ³å®ããŠããŸãããåé¡ã¯staticComponents
ãããã¯ããã«å°ãªãã§ãã çŸåšã staticHelpers
ãMVPã¿ãŒã²ããã«åœ±é¿ãäžãããšã¯äºæ³ããŠããŸããããã¢ããªã±ãŒã·ã§ã³ãsplitAtRoutes
ã«ã¢ããã°ã¬ãŒãããããšãããšãç¶æ³ãå€ããå¯èœæ§ããããŸãã ãã®å Žåã¯ãåé¡ã®ãããŠãŒã¹ã±ãŒã¹ãè©äŸ¡ãã移è¡ã容æã«ããããã®æ°ããAPIãæ€èšããå¿
èŠããããŸãã
staticAddonTrees
ããã³staticAddonTestSupportTrees
çŸåšã®æ³å®ã§ã¯ããããã®ãã©ã°ã¯ã»ãšãã©ã®æ £çšçãªEmberã¢ããªããã³ã¢ããªã³ãšäºææ§ããããããMVPã¿ãŒã²ããã®èŠä»¶ã«å®è³ªçãªåé¡ã¯çºçããŸããã
ãã®åé¡ã¯ãMVPç®æšãéæããåŸãã远跡ã®åé¡ãšããŠæ®ãããšãç®çãšããŠããŸãã MVPã¿ãŒã²ããã®åŸãå®å šãªãšã³ã·ã¹ãã ã®ç§»è¡ãä¿é²ããåçãªãŠãŒã¹ã±ãŒã¹ïŒã³ãŒãåå²ã®ãµããŒããç¶æããïŒã®äººéå·¥åŠãæ¹åããå¿ èŠããããŸãã ãã³ãã¬ãŒãã®ã€ã³ããŒãã¯ããããã®ç®æšã®éæã«åœ¹ç«ã€å¯èœæ§ããããŸãã
移è¡ã®ã³ã¹ãã軜æžãã1ã€ã®æ¹æ³ã¯ãã³ã³ããŒãã³ãã®åŒã³åºãå ããæž¡ãããéçæååã«å¯Ÿå¿ããåŒæ°ãã¢ããªã³ãéçã«ç€ºãããšãã§ããããã«ããããšã§ãã
ã¹ãããããŒã«ãšããŠïŒ better-component
ã¯éçã³ã³ããŒãã³ãããŒã¯ãŒãã®ååã®ãã¬ãŒã¹ãã«ããŒã§ãïŒã
{{better-component <strong i="8">@arg</strong> staticString=true}}
ããã«ãããã¢ããªã³ã¯ãç¹å®ã®ãåçåŒã³åºããããåŒã³åºãå ãéçæååãæäŸããå Žåã«ã®ã¿æ©èœããããšã瀺ãããšãã§ããŸãã
ãããè¡ãå¿ èŠãããã®ã¯ãå®éã«ã¯ãå€ãã®åçã³ã³ããŒãã³ãã®ã±ãŒã¹ããåçŽãªãã¢ããªã³ã«æž¡ãããæåååŒæ°ãã«ãã£ãŠåŒãèµ·ããããŠããå Žåã®ã¿ã§ãã
ããããã®åé¡ã®ãããã¯ã§ããå Žåã¯Idkã§ãããç§ã¯å®æçã«emberclearã§å®å šãªéçæ§ãææ¡ããããšããŠãããåé¡ãšãã®è§£æ±ºçã®çŽã®èšŒè·¡ãä¿æããŠããŸãã
https://github.com/NullVoxPopuli/emberclear/pull/784
ããã§ã人ã ãåé¡ã«ééããå Žåãããããé¿éšã®ããã¥ã¡ã³ãã圹ç«ã€ã§ããããïŒ Idk
ãŸããç§ã¯åºç¹¡ã«ãšãŠãè奮ããŠããŠãå®å
šãªéçæ§ãéæãããããã§ã«å€§ããªèšç»ãæã£ãŠããŸã
https://github.com/emberjs/rfcs/issues/611
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯åçã³ã³ãã³ãé ä¿¡ã·ã¹ãã ã§ãã ã³ã³ãã³ãäœæè ã¯ããã¢ã¯ãã£ããã£èŠçŽ ãããã³ã³ãã³ããçµã¿ç«ãŠãŸããåèŠçŽ ã«ã¯ã察å¿ããEmberã³ã³ããŒãã³ããããããã®ååã¯EmberããŒã¿ã¢ãã«ã§å®çŸ©ãããŠããŸãã ãã®ã·ã¹ãã ã®å¿èéšã¯å€ããå°ãªãã次ã®ããã«ãªããŸãã
// example model definition
export default class TextElement extends Model {
_componentName = 'text-element';
}
{{#each (sort-by "position" @activityElements) as |activityElement|}}
{{component (get activityElement "_componentName")}}
äžèšãèªãã ãšãããããã¯(component dynamicString)
ã·ããªãªã§ããããšãããããŸããã ããã¯æ£ç¢ºã§ããïŒ
äžèšãèªãã ããšã¯ããããïŒã³ã³ããŒãã³ãdynamicStringïŒã·ããªãªã§ããããšã瀺åããŠããŸãã ããã¯æ£ç¢ºã§ããïŒ
@activityElements
ãšã¯äœã§ããïŒã©ãã§å®çŸ©ãããŠããŸããïŒ
ããã¯ãã³ã³ãããŒã©ãŒã³ã³ããŒãã³ãã«æž¡ãããEmberããŒã¿ã¢ãã«ã€ã³ã¹ã¿ã³ã¹ã®é
åã«ãªããŸãã
ãŸããåçã³ã³ããŒãã³ããFYIã«ãå°ãå€é¡ã®æè³ãè¡ããŸããã ç§ã¯æšå¹Žããã§ããã«ã€ããŠå°ããŸããïŒ https ïŒ
ç§ãã¡ãããããŸãã ç§ãã¡ã¯æåéããã¢ããªã§äœ¿çšãããã³ã³ããŒãã³ããäºåã«ç¥ããŸããã ãããã¯ããŒã¿ããŒã¹ã«æ ŒçŽããïŒãã¡ããå€æŽå¯èœã«ãªããŸãïŒãããã¯ãšã³ãã§ã³ã³ãã€ã«ããããªã³ããã³ãã§ããã³ããšã³ãã«éä¿¡ãããŸãã åçãªcomponent
ãã«ããŒã䜿çšã§ããªãããšã¯ãé
åå
šäœã§äœ¿çšã§ããªãããšãšåãã§ãã ãã®ãããªãŠãŒã¹ã±ãŒã¹ã«äœããã®åé²ãããããšãå¿ããé¡ã£ãŠããŸãã å¿
èŠãªãã€ãããºã ããªãããã«ã¢ããªãæ©èœããªãå Žåã¯ãã³ãŒãã®åå²ãããªãŒã®æºãã¯çµ¶å¯Ÿã«æ°ã«ããŸããã
ãã®ã·ããªãªã§æå¹ãªãã¹ãŠã®ã³ã³ããŒãã³ãã®ãããã䜿çšã§ããŸããïŒ
äŸãã°ïŒ
{{#let (hash
Foo=(import 'path/to/foo')
Etc=...
) as |validComponents|
}}
{{component (get validComponents @someDynamicValue)}}
{{/let}}
ïŒ
åæ§ã«ãã¢ããªå ã«ãããã®ããã¬ã³ããªã³ã°ã§ããªããããå®å šãªåçã³ã³ããŒãã³ããå®éã«äœæããããšã¯ã§ããŸãããã¬ã³ããªã³ã°ãããã®ãéžæãããªã¹ããäœæãããšããããã°ã«ã圹ç«ã¡ãŸãã ãããããã®å€ã¯æå¹ãªã³ã³ããŒãã³ãã®1ã€ã§ã¯ãããŸããã§ããã
ãã®ã·ããªãªã§æå¹ãªãã¹ãŠã®ã³ã³ããŒãã³ãã®ãããã䜿çšã§ããŸããïŒ
ããã¯ééããªãç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒããŸãã
@NullVoxPopuli @jherdmançŽ æŽãããïŒ
äžè¬ã«ã (component dynamicString)
代ããã«äººã
ãäœãããå¿
èŠãããããèããæ¹æ³ã¯ãã©ããã«è¡ãããã«import
ãŸãã¯(component "staticString")
ãå¿
èŠã§ãããšããããšã§ãã
ãªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
(component "staticString")
(get componentMap dynamicString)
ã䜿çšããŠããããåãåºããŸããä»ãããªãã¯èããŠãããããããŸããïŒ (get components dynamicString)
ã(component dynamicString)
ãããåªããŠããã®ã¯ãªãã§ããïŒ çãã¯ã componentMap
ãã©ããã«æ§ç¯ããå¿
èŠããããã«ãŒã«ã¯ååž°çã«é©çšããããšããããšã§ãã
ãããã£ãŠã <InputField @type="text" />
ãŸãã¯<InputField @type="checkbox" />
ïŒHTMLã®<input>
ïŒãèšè¿°ã§ããã³ã³ããŒãã³ããèšè¿°ããŠãããšããŸãã
input-field
ãã³ãã¬ãŒãã¯ã次ã®ããã«ãªããŸãã
{{#let (hash text=(component "inputs/text-field") checkbox=(component "inputs/checkbox")) as |components|}}
{{component (get components @type)}}
{{/let}}
ãã®æ¹æ³ã§ã³ãŒããäœæãããšãEmbroiderã¯ããã³ãã«ã«2ã€ã®ã³ã³ããŒãã³ããå«ããã ãã§ããããšãããããŸãã ããªãã¯ããããã®ããã«æžããŠããŸãããïŒ
{{component (concat "inputs/" <strong i="33">@type</strong> "-field")}}
ïŒã¯ãããã®ãããªããšã¯é©ãã»ã©äžè¬çã§ãïŒ
ãã®å ŽåãEmbroiderã¯ã³ãŒããç°¡åã«åæã§ããããã³ãã«ã«å«ãŸããã³ã³ããŒãã³ããå¶éã§ããŸããã JavaScriptã§äœæ¥ãè¡ã£ãå Žåãããã¯ããã«æªåããŸãïŒãããéåžžã«äžè¬çã§ãïŒã
export default class extends Component {
get innerComponent() {
return `inputs/${this.args.type}-field`;
}
}
ãã®ãã³ãã¬ãŒãã䜿çšããŠïŒ
{{component this.innerComponent}}
ããã¯å°ããªèª¿æŽã§ãããEmbroiderãå®éã«äœ¿çšãããŠããã³ã³ããŒãã³ããå€å¥ã§ããããã«ããŸãã
ãŸããä»ã®2ã€ã®å®è¡äžã®æ©èœãžã®æ¥ç¶ããã泚ææ·±ã説æããããšæããŸãã
ãããã®2ã€ã®æ©èœã䜿çšããŠåã®äŸãæžãçŽããšã次ã®ããã«ãªããŸãã
---
import TextField from "./text-field";
import Checkbox from "./checkbox";
---
{{#let (hash text=TextField checkbox=Checkbox) as |components|}}
{{component (get components @type)}}
{{/let}}
ããã«ã¯ãEmbroiderãç解ããå¿ èŠã®ããç¹å¥ãªã«ãŒã«ãæé€ããã¢ãžã¥ãŒã«ã«é¢ããã³ãŒãåå²ã®ãŠãŒã¶ãŒã¢ãã«ãããã«äœæãããšããåªããç¹æ§ããããŸãã
RFCïŒ481以éãã³ã³ããŒãã³ãã¯ã©ã¹ã¯å®å šã«èªå·±å®çµåã®ãŠãããã§ãããGlimmerVMãã³ã³ããŒãã³ããšããŠåŒã³åºãããã«å¿ èŠãªãã¹ãŠã®æ å ±ãåããŠããŸãã
泚ïŒããã¯ã
@ember/component
ãŸãã¯@glimmer/component
ããç¶æ¿ããã¯ã©ã¹ã ãã«åœãŠã¯ãŸãããã§ã¯ãããŸããã RFC 481以éãEmberã®ãã³ã³ããŒãã³ããã®å®çŸ©ã¯ããã³ãã¬ãŒããšã³ã³ããŒãã³ããããŒãžã£ãŒã«é¢é£ä»ãããããªããžã§ã¯ããã§ãããããã¯ãããã³ã³ããŒãã³ããªã©ã®ã«ã¹ã¿ã ã³ã³ããŒãã³ããå«ãŸããŠã
RFCïŒ432 ïŒã³ã³ããã¹ããã«ããŒããã³ä¿®é£ŸåïŒããã³RFCïŒ496 ïŒãã³ãã«ããŒã®å³å¯ã¢ãŒãïŒä»¥éãEmberã®ãã³ãã¬ãŒãæ§æã®å°æ¥ã®èšèšã¯æ¬¡ã®ãšããã§ãããã«ããŒãã³ã³ããŒãã³ãããŸãã¯ä¿®é£Ÿåãå«ãåŒã¯ããã«ããŒãã³ã³ããŒãã³ãããŸãã¯ä¿®é£ŸåãšããŠåŒã³åºãããšãã§ããŸãã
æ¿èªãããRFCã®çŸåšã®ã³ã¬ã¯ã·ã§ã³ã®æå³ãããšããã¯ã <SomeComponentClass />
ïŒãŸãã¯this.componentClass
ãã³ã³ããŒãã³ãã¯ã©ã¹ã«è§£æ±ºãããå Žåã¯<this.componentClass>
ïŒããæ£ããæ©èœããããšããããšã§ãã ããã¯ãå®è£
äœæ¥ã®èšé²èšç»ã§ããããŸãã
ãšã¯ãããããããããããããã«ããã®åäœãæ瀺çã«æå®ããæ°ããRFCãäœæããå¿ èŠããããŸãã
HBSã®æå¹ãªã³ã³ããŒãã³ãã®ãªã¹ããã©ããã«æå®ããããšã¯å¯èœã§ããã泚æãå¿ èŠãªç¹ãããã€ããããŸãã
ããã¯JSïŒãšã«ãããããªãã¯APIã䜿çšïŒafaikã«ã¯ååšããŸãããããã£ã¬ã¯ããªæ§é ã䜿çšãããšéåžžã«äŸ¿å©ã§ãã äŸãã°ïŒ
{{#let (lookup-directory "components/inputs/") as |components|}}
{{/let}}
ãã®çš®ã®ããšã¯ããã£ã¬ã¯ããªæ§é ã«ãã£ãŠã°ã«ãŒãåãããããªã¢ãŒãã£ãã¯ã¿ã€ããããã£ãŠããå Žåãæéã®çµéãšãšãã«ä¿å®ãããããªãå¯èœæ§ããããŸãã
ãããã«ãããåçã³ã³ããŒãã³ãã¯ããããåŒãç¶ãã®ã§ã¯ãªããè°è«ããããã«ç¬èªã®åé¡ãå¿ èŠã ãšæããŠããŸãðð
ãããã«ãããåçã³ã³ããŒãã³ãã¯ããããåŒãç¶ãã®ã§ã¯ãªããè°è«ããããã«ç¬èªã®åé¡ãå¿ èŠã ãšæããŠããŸãðð
ç§ã¯åæããRFCãªããžããªã§ãŸããªãéããããã«ãªã³ã¯ãæçš¿ããŸãã
@mehulkar @wycats @jherdmanãŠãŒã¶ãŒãåçã«åŒã³åºãå¯èœãªã³ã³ããŒãã³ãã®ãªã¹ããã€ã³ããŒãã§ããããã«ããã®ã¯ã©ãã§ããïŒ è¿œå ã¬ãã«ã®éæ¥åç §ãå«ããã«ããŒãããã¯ããã«ç°¡åã«ãã©ããŒã§ããããã§ãã
import Component1 from './dynamic/component-1';
import Component2 from './dynamic/component-2';
import Component3 from './dynamic/component-3';
export default class extends Component {
get innerComponent() {
switch(this.args.type) {
case 'one':
return Component1;
case 'two':
return Component2;
case 'three':
return Component3;
default:
// handle invalid type
}
}
}
次ã«ããã³ãã¬ãŒãã¯æ¬¡ã®ããšãå®è¡ã§ããŸãïŒ {{#let (component this.innerComponent) as |DynamicComponent|}}
ãŸãã¯åæ§ã®ãã®ã
æ€çŽ¢/èªã¿åã/åæãç°¡åã§ããããã®ã³ã³ããŒãã³ãã䜿çšãããŠããå Žæãç°¡åã«æ€åºã§ããããã®ãããªãã®ãã¯ããã«æãŸããã§ãã èãïŒ
@Samsiniteãããããã¢ã€ãã¢ã ãšæããŸãã HBSã®ãã«ããŒã¯äž»ã«ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒã§ããããã³ãã¬ãŒãã®ã¿ã®ã³ã³ããŒãã³ãã«åœ¹ç«ã¡ãŸãã
@Samsiniteã¯åºæ¬çã«ãïŒãã³ãã¬ãŒããã€ã³ããŒãããåã«ïŒçæçãªä¿®æ£ãšããŠææ¡ãããã®ã§ãã
ã³ã³ããŒãã³ãã¯ã©ã¹ãåŒã³åºãå¯èœã«ããå¿ èŠããããŸããããã¯ããã®ã³ã¡ã³ãã§è©±ããŠãããã®ã§ãã
è¡ããŸãããïŒ
ãããããã¯ãã³ãã¬ãŒãã®ã¿ã®ã³ã³ããŒãã³ãã«ã¯æå³ããããŸãã誀解ããŠãã¿ãŸãã:)ã ãŸãã次ã®ãã³ãã¬ãŒãã®ã¿ã®ã³ã³ããŒãã³ãã®æ§æãæ°ã«å ¥ã£ãŠããŸãã
---
import TextField from "./text-field";
import Checkbox from "./checkbox";
---
{{#let (hash text=TextField checkbox=Checkbox) as |components|}}
{{component (get components @type)}}
{{/let}}
åæ§ã«ãå®éã«ã¯ãããŒã ã®ä»ã®ã¡ã³ããŒãèªã¿ããããšæããã®ã«å¿ããŠããããããã³ãã¬ãŒãã®ã¿ãšjsã§ããã¯ã¢ãããããã³ã³ããŒãã³ãã«äœ¿çšããŸãã
æãåèã«ãªãã³ã¡ã³ã
@NullVoxPopuli @jherdmançŽ æŽãããïŒ
äžè¬ã«ã
(component dynamicString)
代ããã«äººã ãäœãããå¿ èŠãããããèããæ¹æ³ã¯ãã©ããã«è¡ãããã«import
ãŸãã¯(component "staticString")
ãå¿ èŠã§ãããšããããšã§ãããªãã·ã§ã³ã¯æ¬¡ã®ãšããã§ãã
(component "staticString")
(get componentMap dynamicString)
ã䜿çšããŠããããåãåºããŸããä»ãããªãã¯èããŠãããããããŸããïŒ
(get components dynamicString)
ã(component dynamicString)
ãããåªããŠããã®ã¯ãªãã§ããïŒ çãã¯ãcomponentMap
ãã©ããã«æ§ç¯ããå¿ èŠããããã«ãŒã«ã¯ååž°çã«é©çšããããšããããšã§ãããããã£ãŠã
<InputField @type="text" />
ãŸãã¯<InputField @type="checkbox" />
ïŒHTMLã®<input>
ïŒãèšè¿°ã§ããã³ã³ããŒãã³ããèšè¿°ããŠãããšããŸããinput-field
ãã³ãã¬ãŒãã¯ã次ã®ããã«ãªããŸãããã®æ¹æ³ã§ã³ãŒããäœæãããšãEmbroiderã¯ããã³ãã«ã«2ã€ã®ã³ã³ããŒãã³ããå«ããã ãã§ããããšãããããŸãã ããªãã¯ããããã®ããã«æžããŠããŸãããïŒ
ïŒã¯ãããã®ãããªããšã¯é©ãã»ã©äžè¬çã§ãïŒ
ãã®å ŽåãEmbroiderã¯ã³ãŒããç°¡åã«åæã§ããããã³ãã«ã«å«ãŸããã³ã³ããŒãã³ããå¶éã§ããŸããã JavaScriptã§äœæ¥ãè¡ã£ãå Žåãããã¯ããã«æªåããŸãïŒãããéåžžã«äžè¬çã§ãïŒã
ãã®ãã³ãã¬ãŒãã䜿çšããŠïŒ
ããã¯å°ããªèª¿æŽã§ãããEmbroiderãå®éã«äœ¿çšãããŠããã³ã³ããŒãã³ããå€å¥ã§ããããã«ããŸãã