Ember.js: 3.8.0-beta.1์—์„œ ๋งˆ์นจํ‘œ๊ฐ€ ํฌํ•จ ๋œ ํ‚ค์˜ ๊ฐ ์ž…๋ ฅ ์ค‘๋‹จ

์— ๋งŒ๋“  2019๋…„ 01์›” 29์ผ  ยท  25์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: emberjs/ember.js

{{each-in}} ๋Š” ํ‚ค์— ๋งˆ์นจํ‘œ๊ฐ€ ํฌํ•จ ๋œ ๊ฐ’์— ๋Œ€ํ•ด undefined ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋Š” 3.7.2์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉฐ 3.8.0-beta.1์— ์ฒ˜์Œ ๋‚˜ํƒ€๋‚˜๊ณ  3.8.0-beta.3์— ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์‹คํŒจ ( packages/@ember/-internals/glimmer/tests/integration/syntax/each-in-test.js ๋“œ๋กญ)

[`<strong i="11">@only</strong> each-in supports keys with a period in them`]() {
  this.render(
    strip`
    <ul>
      {{#each-in categories as |_ item|}}
        <li>{{item.name}}</li>
      {{/each-in}}
    </ul>
  `,
    {
      categories: {
        // uncomment and run.  notice `items` is undefined
        'hello.world': { name: 'foo' },
        // uncomment and run.  notice it works as expected
        // hello world: { name: 'foo' },
      },
    }
  );

  // Empty
  this.assertHTML(strip`
    <ul>
      <li>foo</li>
    </ul>
  `);
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

https://github.com/emberjs/ember.js/pull/18296์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  25 ๋Œ“๊ธ€

@jasonmit ํ…Œ์ŠคํŠธ ์‹คํŒจ๋กœ PR์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ํ™•์‹คํžˆ ์ด๊ฒƒ์„ ๊ทผ๋ณธ ์›์ธ์œผ๋กœํ•ด์•ผํ•˜์ง€๋งŒ, ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ ๋ฒ„๊ทธ๋กœ ๊ฐ„์ฃผ ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠนํžˆ get(obj, 'hello.world') ๋Š” obj.hello.world ์•„๋‹Œ obj['hello.world'] obj.hello.world ์ฐพ์Šต๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๊ฒƒ์ด ์ด์œ ๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. each-in์€ get์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ด๊ฒƒ์€ get with dot path ํ‹ฐ์ผ“์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. Mayyyybe์ด ํŠน์ • ๊ฒฝ์šฐ์— ES5 ๊ฒŒํ„ฐ๋ฅผ ์ฐฉ๋ฅ™์‹œํ‚จ ํ›„ ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํ”„๋ก์‹œ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

ํŠนํžˆ https://github.com/emberjs/ember.js/blob/master/packages/%40ember/-internals/glimmer/lib/utils/iterable.ts#L128

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฒ„๊ทธ๋กœ ๊ฐ„์ฃผ๋˜๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ์ด๊ฒƒ์„ ๊ณ ์น˜๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ฑฐ๋‚˜ ๊ธธ์„ ๋”ฐ๋ผ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

Ya, ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์„œ ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ํœด๋ฆฌ์Šคํ‹ฑ ์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ์ผ์„ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://github.com/emberjs/ember.js/blob/7df81ec411b2da73086f63bf6a26b113dfa5a1a2/packages/%40ember/-internals/glimmer/lib/utils/iterable.ts#L290 -L298

์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต๊ธฐ ์ค‘ ์ผ๋ถ€๋Š” get ( ObjectIterator.fromIndexable )๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ผ๋ถ€๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ( ObjectIterator.fromForEachable , MapLikeNativeIterator.from ).

์ด ๊ฒฝ์šฐ fromIndexable ๋ฅผ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. get์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” cps๊ฐ€์žˆ๋Š” pojos๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@chancancode-๋„ค , @jasonmit ์ด ๊ฐœ์ฒด๋ฅผ Symbol.iterable ๊ตฌํ˜„ํ•˜๋„๋กํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์ ํ•ฉ๋‹ˆ๋‹ค.

@jasonmit ํ…Œ์ŠคํŠธ ์‹คํŒจ๋กœ PR์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์‹คํžˆ, ์ง€๊ธˆ ๊ทธ๋ ‡๊ฒŒํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— @jasonmit ์ด ๊ฐ์ฒด๊ฐ€ Symbol.iterable์„ ๊ตฌํ˜„ํ•˜๋„๋กํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ

์ข‹์€ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ‚ค์— ๋งˆ์นจํ‘œ๊ฐ€์žˆ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•œ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ์ฒด์˜ ํ‚ค๋Š” ISO ๋ฌธ์ž์—ด (์˜ˆ : 2011-10-05T14:48:00.000Z )์ด๊ณ  UTC ์˜คํ”„์…‹ ์ด์ „์— ๋งˆ์นจํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์˜ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@ amk221 ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ตญ ํ‚ค์˜ ๊ธฐ๊ฐ„์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์•ฑ์„ ๋ฆฌํŒฉํ† ๋งํ–ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ด๋ฒˆ์— PR์„ ๋งŒ๋“ค์–ด ๋ฆฌ๋ทฐ๋ฅผ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค : D

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒŒ ์ •๋ง ํ•„์š”ํ•ด ๐Ÿคž

@ amk221 ๋„์šฐ๋ฏธ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์— ๋ช‡ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Ember๋ฅผ ์ฒ˜์Œ ์ ‘ํ–ˆ๊ณ  ์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋†€๋ž์Šต๋‹ˆ๋‹ค.

๋‚ด ์•ฑ์˜ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๋ฏ€๋กœ IP ๋˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์œผ๋กœ ํ•ด์‹œ ํ‚ค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. localhost ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๊ณ ์ด ๋ฌธ์ œ๋ฅผ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋ฏธ์ณ ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.

@ devop911 ์€ ๋‹น์‹ ์˜ ๋„์šฐ๋ฏธ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜

@ amk221 ๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ตญ :

import { helper } from '@ember/component/helper';
import _ from 'lodash';

export function hashToArray([h]) {
  return _.map(h, function(value, key) {
    return {
      key: key,
      value: value,
    }
  });
}

export default helper(hashToArray);

๋‚˜๋Š”์ด ๋ฌธ์ œ๋„ ๋งŒ๋‚ฌ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

get ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํšŒ๊ท€ํ•˜์ง€ ์•Š๊ณ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํšŒ๊ท€๊ฐ€ ๋‚˜์˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฒค์น˜ ๋งˆํฌ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์„ get ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด each-in ์ง์ ‘ ๋นŒ๋“œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ดœ์ฐฎ์€ ํšŒ๊ท€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ์ธ ๊ฒฝ์šฐ ์ˆ˜๋™์œผ๋กœ ํ”„๋ก์‹œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐ์ฒด์— unknownProperty ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ ํ•  ์ˆ˜์žˆ๋Š” each-in ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋ฐ˜๋ณต ํ•  ๋•Œ ํŠน๋ณ„ํžˆ ์ผ๋ฐ˜ get ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ๊ธฐ์ ์œผ๋กœ ์ถ”์  ๋œ ์†Œํ’ˆ์€ ๊ณง ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค ๐Ÿ˜ฉ

์งง์€ ์ด์•ผ๊ธฐ : Ember๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@ devop911 ๋Œ“๊ธ€์€ ๋งค์šฐ ๊ฑด์„ค์ ์ด๊ฑฐ๋‚˜ ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ๋ฅผ ์ ˆ๋Œ€์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ƒ๋Œ€์ ์œผ๋กœ ๋“œ๋ฌธ ์—ฃ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํšŒ๊ท€์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๋กœ์žˆ๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์„ ์ œ๋•Œ ์•Œ์•„๋‚ผ ๊ฒƒ์ด๋ฉฐ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ Octane์˜ ๋ฐฐ์†ก ๊ธฐ๋Šฅ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋™์˜ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ—‰
์‚ฌ์šฉ์ž๊ฐ€ ํ‚ค ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•˜๊ฒŒํ•˜์„ธ์š”.

@pzuraq each-in ์˜ ํ‚ค์— ๋งˆ์นจํ‘œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ตœ์†Œํ•œ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํšŒ๊ท€๋ฅผ ๋„์ž…ํ•˜์ง€ ์•Š๋Š” ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜์€ ์—†์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๋‹ค.

@ devop911 ์—ฃ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ์ €์˜ ํ‰๊ฐ€๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์—ด๋ฆฐ ์ดํ›„ ์ „๋ฐ˜์ ์œผ๋กœ์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•œ๋ณด๊ณ ๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ธฐ๋ฐ˜์œผ๋กœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ชจ๋“  Ember ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์˜์กดํ•˜๋Š” ๋™์ž‘์ด๋ผ๋ฉด ์ ˆ๋Œ€์ ์œผ๋กœ ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„ ์ˆ˜์ •์ด๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ‚ค์— ๋งˆ์นจํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์šฐ๋ฆฌ๋Š” ์„ฑ๋Šฅ์ด ์ €ํ•˜ ๋  ๋•Œ๋งˆ๋‹ค ๋งŽ์€ ๋ถˆ๋งŒ์„๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ•ซ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค๋ฉด ์ˆ˜์ •์€ ํ™•์‹คํžˆ ํ›จ์”ฌ ๋” ์ผ์ฐ ์™”์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด, ๊ด€๋ฆฌ์ž๋กœ์žˆ๋Š” ๊ฒƒ์€ ์–ด๋ ค์šด ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹น์‹ ์ด ์ผ์„ ๋๋‚ด๋ ค๊ณ  ํ•  ๋•Œ ๐Ÿ˜ฉ ๋‚˜์ค‘์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€์ด ์ผ์„ํ•˜๋„๋กํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

@ rwwagner90 ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ–‰๋™์„ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ ๊ฒฝ๊ณ ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์‹ถ์ง€๋งŒ ๊ณ ์น  ์ˆ˜ ์—†๋‹ค๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™•์‹คํžˆ ๊ฒฝ๊ณ ํ•ด์•ผํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/emberjs/ember.js/pull/18296์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค โค๏ธ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰