Angular-styleguide: $emit, $broadcast ๋˜๋Š” $on์„ ๊ณต์žฅ์œผ๋กœ ์˜ฎ๊ธฐ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2015๋…„ 05์›” 12์ผ  ยท  8์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: johnpapa/angular-styleguide

John, Y031์—์„œ ๋‹ค์Œ์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด $emit, $broadcast ๋˜๋Š” $on์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ๊ฒŒ์‹œ ๋ฐ ๊ตฌ๋…ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์„ ํŒฉํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ ์ƒ˜ํ”Œ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

question

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

์—ฌ๊ธฐ์— ํ›Œ๋ฅญํ•œ ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค .

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

๋‚˜๋„ ์ด๊ฒƒ์„ ๊ถ๊ธˆํ•ดํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ stackOverflow ์งˆ๋ฌธ/๋‹ต์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. http://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory

๋‚˜๋Š” ๊ฐ๋„์— ๊ด€ํ•œ ํ•œ ์ƒ๋‹นํžˆ ์ดˆ๋ณด์ž์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋‚˜์œ ์Šต๊ด€์ด๋ผ๋ฉด ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ ๋งํ•ด์ฃผ์‹ญ์‹œ์˜ค. :)

์—ฌ๊ธฐ์— ํ›Œ๋ฅญํ•œ ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค .

์ˆœ์ˆ˜ํ•œ ์•ต๊ทค๋Ÿฌ ํ”„๋กœ์ ํŠธ์ธ์ง€ ๋ ˆ๊ฑฐ์‹œ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ”„๋กœ์ ํŠธ์ธ์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
์ฆ‰, Angular ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์™€ ์™ธ๋ถ€์—์„œ ๋™์ผํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ณต์œ ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ
pub/sub๋ฅผ ํŒฉํ† ๋ฆฌ๋กœ ๋งŒ๋“ค๋ฉด ๋Œ€์ฒด ๊ตฌํ˜„์ด $emit, $broadcast๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: http://jonathancreamer.com/an-angular-event-bus-with-postal-js/

Y031 ์˜ ๋‹ค์Œ ๋ฌธ์žฅ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ์–ด๋ ค์›€์„

ํ•„์š”ํ•  ๋•Œ๋งŒ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ $scope๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด $emit, $broadcast ๋˜๋Š” $on์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ๊ฒŒ์‹œ ๋ฐ ๊ตฌ๋…ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์„ ํŒฉํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋ž˜์„œ ์œ„ ๋ฌธ์žฅ์˜ ๊ฒฐ๋ก ์€ ํŒฉํ† ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฉ์†ก์„ ์•„์˜ˆ ํ”ผํ•˜๋ผ๋Š” ๊ฑด๊ฐ€์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค๋ฅธ ๊ณต์‹์„ ์ œ์•ˆํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ ๊ฐ„ ํ†ต์‹ ์ด ์•„๋‹ˆ๋ผ ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์ƒํƒœ ๋ณ€๊ฒฝ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ์†ก์„ ์œ„ํ•œ ์ ์ ˆํ•œ ์ž‘์—…์ฒ˜๋Ÿผ ๋Š๊ปด์ง„๋‹ค๋ฉด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฐ์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ์— ์•Œ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—?

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด @sebastianhaas๋ฅผ ์˜คํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์˜ ์ด ๊ตฌ์ ˆ์€ $emit , $broadcast ๋˜๋Š” $on ์˜ ์‚ฌ์šฉ๋ฒ•์„ ํŒฉํ† ๋ฆฌ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŒฉํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

@zachlysobey ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์˜ˆ, ํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํŠน์ • ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ $on ๋ฅผ ๊ณต์žฅ์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์— ๋‹ค์‹œ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด... ๊ฑฐ๊ธฐ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ฌธ์žฅ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์š”์ ์€ ํ•„์š”ํ•  ๋•Œ๋งŒ $scope๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋ฒ”์œ„๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋˜๋Š” ๋ฐฉ์ถœ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ OK์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์˜ต์…˜๋„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋„ scope.apply๋ฅผ ์–ต์ œํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ์กฐ์‹ฌํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์žฅ์„ ์ œ๊ฑฐํ–ˆ๋‹ค.

๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

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