Angular.js: ng-transclude๋Š” ์ƒˆ ํ˜•์ œ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2013๋…„ 12์›” 20์ผ  ยท  69์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/angular.js

์ด๊ฒƒ์€ ๋ณ€๊ฒฝ ์š”์ฒญ์— ๊ฐ€๊น๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒธ์†ํ•œ ์˜๊ฒฌ์œผ๋กœ๋Š” ng-transclude๋Š” ์ž์ฒด ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ๊ทธ๋ ‡๊ฒŒํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€์ ธ์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” transclusion์„ ์š”์ฒญํ•˜๋Š” ์ง€์‹œ๋ฌธ์ด ์ด๋ฏธ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ธ์ง€ ๊ฒฉ๋ฆฌ ๋œ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ธ์ง€ ๋˜๋Š” ์ „ํ˜€ ๋ฒ”์œ„๋ฅผ ๊ฐ–์ง€ ์•Š์„ ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ng-transclude ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ng-transclude๊ฐ€ ์ž์‹ ์˜ ํ˜•์ œ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๋ฉด ์›ํ•˜๋Š” ๋ฒ”์œ„์˜ ์ข…๋ฅ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์ง€์‹œ๋ฌธ์˜ ๊ธฐ๋Œ€์น˜๋ฅผ ๊นจ๋œจ๋ฆฌ๊ณ  ์ธ๊ธฐ์žˆ๋Š” '๊ฐ€์น˜'๋Œ€ '๊ฐ์ฒด. ๊ฐ’'ํ˜ผ๋™์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋‚ด ์˜๊ฒฌ์œผ๋กœ๋Š” ์ƒˆ ๋ฒ”์œ„๊ฐ€ ์˜๋ฏธ๊ฐ€์—†๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค.

ui.directive('box', function() {
    return {
        restrict: 'E',
        transclude: true,
        template: '<div ng-transclude/>',
        replace: true,
        scope: {}
    };
});

์ด ์ง€์‹œ๋ฌธ์ด ์›ํ•˜๋Š” ๊ฒƒ์€ <box>content</box> ๋ฅผ <div>content</div> ๋กœ ๋ฐ”๊พธ๊ณ  ๋‚ด์šฉ์ด ๊ฒฉ๋ฆฌ ๋œ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด ์ค‘์ฒฉ ๋œ ์ง€์‹œ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฒ”์œ„ ํŠธ๋ฆฌ ์˜ค์—ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ”์œ„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„ธ ๊ฐœ์˜ ์ค‘์ฒฉ ๋œ ์ง€์‹œ๋ฌธ์˜ ํ”Œ ๋Ÿฐ์ปค ์˜ˆ์ œ (http://plnkr.co/edit/DwukVGGprFFjQuVY8yTz)์ž…๋‹ˆ๋‹ค.

< Scope (002) : ng-app
    < Scope (003) : ng-controller
        < Scope (004) : box
        < Scope (005) : ng-transclude
            < Scope (006) : box
            < Scope (007) : ng-transclude
                < Scope (008) : box
                < Scope (009) : ng-transclude

์ด ๋™์ž‘์€ ๋ชฉ์ ์— ์•„๋ฌด๋Ÿฐ ๊ฐ€์น˜๋ฅผ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ดˆ๋ณด์ž๋“ค ์‚ฌ์ด์— ๋งŽ์€ ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ์ด์ „ ์˜ˆ์ œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์ •ํ™•ํžˆ ๋‹ฌ์„ฑํ•˜๋Š” ๋‹ค์Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ui.directive('box', function() {
    return {
        restrict: 'E',
        transclude: true,
        template: '<div/>',
        replace: true,
        scope: {},
        link: function(scope, element, attrs, transclude) {
            transclude(scope.$parent, function(content) {
                element.append(content);
            });
        }
    };
});

๋‹ค์Œ์€์ด ๊ฐœ๋…์„ ๋ณด์—ฌ์ฃผ๋Š” ํ”Œ ๋Ÿฐ์ปค ์˜ˆ์ œ (http://plnkr.co/edit/46v6IBLkhS71L1WbUDFl)์ž…๋‹ˆ๋‹ค. ์Šค์ฝ”ํ”„ ํŠธ๋ฆฌ๋ฅผ ๋ฉ‹์ง€๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

< Scope (002) : ng-app
    < Scope (003) : ng-controller
        < Scope (004) : box
        < Scope (005) : box
        < Scope (006) : box

๊ทธ๋ฆฌ๊ณ  ์–‘๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์€ 'object.value'๊ฐ€ ์•„๋‹Œ 'value'๋ฅผ ๋ฐ”์ธ๋”ฉ ํ•  ๋•Œ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. (์ €๋Š” '๊ฐ€์น˜'๋งŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ํšจ๊ณผ๊ฐ€ ์—†๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ”„๋กœํ†  ํƒ€์ž… ์ƒ์†์˜ ๋ณธ์งˆ์„ ๋น„๋‚œํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๋ณ€๋ช…์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด์ด ๋™์ž‘์ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ–‰๋™์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์•„ํ‚คํ…์ฒ˜ ๊ฒฐํ•จ์ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. .)

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ƒ๊ฐ๊ณผ ng-transclude์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ํ˜•์ œ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

Lots of comments $compile high won't fix bug

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

๋ช‡ ๋…„ ์ „์— Ember๋กœ ์ „ํ™˜ ํ•œ ๊ฒƒ์€ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. :)

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

Transclude๋Š” ์–ด๋””์—์„œ ์ƒˆ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๊นŒ? http://plnkr.co/edit/EuHaBR26JgAegQKvwOGH?p=preview ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค

ng-transclude ์ง€์‹œ๋ฌธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜ˆ์—์„œ ๋‹น์‹ ์ด ๊ฐ€์ง„ ๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‚ด ์ž‘์—…์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์œ ํšจํ•œ ์š”์ฒญ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ 1.2์— ๋Œ€ํ•ด ๊ณ ๋ คํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์ตœ์ข… ๋ฆด๋ฆฌ์Šค์— ๊ฐ€๊นŒ์›Œ์ง€๊ณ  ์žˆ์—ˆ๊ณ ์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋„์ž…ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

1.3์— ๋Œ€ํ•ด ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ž˜ ํ–ˆ์–ด! ๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ +1. ๋‚ด ๋ฌธ์ œ๋Š” ์ด๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค : ์–‘์‹์ด์žˆ๋Š” ์ง€์‹œ๋ฌธ์—์„œ ng-transclude๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–‘์‹ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด scope. $$ childHead๋ฅผ ํ†ต๊ณผํ•ด์•ผํ•˜์ง€๋งŒ ๋ชจ๋ธ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ : http://fiddle.jshell.net/39cgW/3/

์˜ค๋Š˜์ด ๋ฌธ์ œ์— +1ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ $parent ๋ชจ๋“  ๊ณณ์— ๋˜์ง€๋Š” ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1) ngTransclude ์ง€์‹œ๋ฌธ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค (์‹ค์ œ๋กœ ์ด๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์ด ์ถ•์†Œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .--- ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค)

๋˜๋Š”

2) ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ƒˆ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋”ฐ๋ผ์„œ ์˜ต์…˜ 1)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ๋ฐ”์ดํŠธ๋ฅผ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ข‹์Šต๋‹ˆ๋‹ค. 2) ๊ฐ€์žฅ ์ž‘์€ ์†”๋ฃจ์…˜ (3 ์ค„ ์‚ญ์ œ ์ •๋„)์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•”์‹œ ์ ์œผ๋กœ ์˜๋ฏธ๊ฐ€์žˆ๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ( ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฌธ์„œ์—์„œ ์ดˆ์›”์ด ์„ค๋ช…๋˜๋Š” ๋ฐฉ์‹๊ณผ ์™„์ „ํžˆ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)


๋˜๋Š” ๋งค์šฐ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ngTransclude๊ฐ€ ์†์„ฑ ๊ฐ’์„ ํ†ตํ•ด ์ƒˆ ๋ฒ”์œ„๋ฅผ ์›ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ค‘๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๊ฐ?

๋‚˜๋Š” ๋‹น์‹ ์˜ 1๊ณผ 2์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค!

๋‚ด ์˜๊ฒฌ ์ผ ๋ฟ์ด์ง€ ๋งŒ์ด ๋ณ€๊ฒฝ์—๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ์ค‘์š” ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. $ parent ๋ฐ scope. $$ childHead์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉ ํ•˜์—ฌ์ด ๋ฒ”์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ๋งŽ์€ ์•ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ์—…๋ฐ์ดํŠธ๋Š” ์•ฝ๊ฐ„์˜ ๋‘ํ†ต์„ ์œ ๋ฐœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (ํ•˜์ง€๋งŒ ๋‚˜์ค‘์— ๋‘ํ†ต์„ ์ผ์œผํ‚ค๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค).

์ฆ‰, ์ด๋ก ์  ๊ด€์ ์—์„œ ng-tranclude๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์‹œ๋ฌธ๊ณผ ๋™์ผํ•œ ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐฐ์ œํ•˜๋Š” ์š”์ ์€ ์ฝ˜ํ…์ธ ์˜ ์›ํ™œํ•œ ๋ถ€๋ถ„์„ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. transcludes๊ฐ€์žˆ๋Š” ์ง€์‹œ๋ฌธ์˜ ์ค‘์ฒฉ์ด ๋งŽ์ง€๋งŒ ์—ฌ์ „ํžˆ ํ•˜๋‚˜์˜ ํฐ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋™์ž‘ํ•˜๊ธฐ๋ฅผ ์›ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์ฝ”ํ”„๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅด๋ฉด ๋งค์šฐ ๊นŒ๋‹ค ๋กญ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ๋ฟ์ž…๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ์˜ต์…˜์„ ๊ฐ–๋Š” ๊ฒƒ์€ ํ˜„์žฌ ์ƒํ™ฉ๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ์œ„ ๋‹จ๊ณ„๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

@troch ๋ฅผ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด ngTranscludeDirective์˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋‹ค์Œ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

        // This is the function that is injected as `$transclude`.
        function controllersBoundTransclude(scope, cloneAttachFn) {
          var transcludeControllers;

          // no scope passed
          if (arguments.length < 2) {
            cloneAttachFn = scope;
            scope = undefined;
          }

          if (hasElementTranscludeDirective) {
            transcludeControllers = elementControllers;
          }

          return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers);
        }

์ง€์‹œ๋ฌธ์€ ๋ฒ”์œ„์—†์ด์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๋ฒ”์œ„๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ๊ทธ๋Ÿฐ ๋‹ค์Œ boundTranscludeFn ์—์„œ transcludeScope๊ฐ€ ๊ฑฐ์ง“์ด๋ฉด ์ƒˆ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค ...

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ๋งํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ 1์— ๋Œ€ํ•ด, transclude ํ•จ์ˆ˜์˜ ํ˜„์žฌ ๋ฒ”์œ„๋ฅผ ๊ฐ„๋‹จํžˆ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ด ์ง€์‹œ๋ฌธ์€ ๋ถ„๋ฆฌ ๋ฒ”์œ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์˜ ์ธ์ ‘ ์ง€์‹œ๋ฌธ์ด๋ฏ€๋กœ ์—ฌ์ „ํžˆ ์›๋ž˜ ๋ฒ”์œ„๋ฅผ ์ œ๊ณตํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค). .

๋˜๋Š” 2), ์ƒˆ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค์ง€ ๋ง๊ณ  ํ˜„์žฌ ๋ฒ”์œ„ (createBoundTranscludeFn์—์„œ)๋กœ ๊ธฐ๋ณธ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค (์ž ์žฌ์ ์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ค‘๋‹จํ•˜๊ณ  ์ž ์žฌ์ ์œผ๋กœ ๋งŽ์€ ํ…Œ์ŠคํŠธ๋ฅผ ์ค‘๋‹จ ํ•จ).

๋‘˜ ๋‹ค ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1

ํ™•์‹คํžˆ +1

+1

+1

+1

+1 ๋ถ€ํƒํ•ฉ๋‹ˆ๋‹ค

๋‹น์‹ ์€ ๊ฝค ๋ฉ‹์ง„ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋ก 1.3 ์‹œ๊ฐ„์— ์™„์ „ํžˆ ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ES6 ํ”„๋ก์‹œ ๋Š” transclusion์„ ์ •๋ง ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ ๊ตฌํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋งˆ๋„ scope. $ new ()๋กœ ๋Œ€์ฒด ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ค์ œ๋กœ์ด ์ž‘์—…์„ ์ƒ๋‹นํžˆ ์ผ์ฐ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊นŒ๋‹ค๋กœ์šด ๊ฒƒ์€ ์‚ฌ์–‘์ด ์•ฝ๊ฐ„ ํ”๋“ค๋ฆฐ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฒ”์œ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งค์šฐ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ์›์น˜ ์•Š๋Š” ๋ฒ”์œ„๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ตœ์†Œํ•œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ด ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ๋ถ€์ž‘์šฉ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฐ๋ผ์š”.

+1

+1

+1

+1

+1

๋ฉ๋ฉ

๋˜๋Š” ๋งค์šฐ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ngTransclude๊ฐ€ ์†์„ฑ ๊ฐ’์„ ํ†ตํ•ด ์ƒˆ ๋ฒ”์œ„๋ฅผ ์›ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ค‘๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด์—†๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋‚ด ํˆฌํ‘œ๋ฅผ๋ฐ›์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1. ๋‚˜๋Š” ํ•ญ์ƒ์ด ํ–‰๋™์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•ดํ–ˆ๋‹ค. ๋‚˜๋Š” caitp ์˜์ด ์†”๋ฃจ์…˜์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ๋ฉ

๋˜๋Š” ๋งค์šฐ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด> ngTransclude๊ฐ€ ์†์„ฑ ๊ฐ’์„ ํ†ตํ•ด ์ƒˆ ๋ฒ”์œ„๋ฅผ ์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ค‘๋‹จํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

์ด ๋ฌธ์ œ๋ฅผ๋ณด๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด '๊ฐœ์„  ๋œ'ng-transclude ์ง€์‹œ๋ฌธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ ๊ฐ’์€ ์›ํ•˜๋Š” ๋‚ด๋ถ€ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๊ณ  3 ์ค‘ ํ•˜๋‚˜ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • silbing - transclusion ์ด ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ์˜ ํ˜•์ œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ˜„์žฌ์˜ ng-transclude ๋™์ž‘์ž…๋‹ˆ๋‹ค.
  • parent -transcluded content ๋ฒ”์œ„๋Š” transclusion์ด ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
  • child -transcluded contents ๋ฒ”์œ„๋Š” transclusion์ด ๋ฐœ์ƒํ•˜๋Š” ์š”์†Œ์˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ž์‹ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ :

template: 
  '<div ng-transclude="parent">' +
  '</div>'

์ „์ฒด ์˜ˆ

๋ชจ๋“  ์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด ์ด plunk ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image

์ถœ์ฒ˜

.config(function($provide){
    $provide.decorator('ngTranscludeDirective', ['$delegate', function($delegate) {
        // Remove the original directive
        $delegate.shift();
        return $delegate;
    }]);
})

.directive( 'ngTransclude', function() {
  return {
    restrict: 'EAC',
    link: function( $scope, $element, $attrs, controller, $transclude ) {
      if (!$transclude) {
        throw minErr('ngTransclude')('orphan',
         'Illegal use of ngTransclude directive in the template! ' +
         'No parent directive that requires a transclusion found. ' +
         'Element: {0}',
         startingTag($element));
      }

      var iScopeType = $attrs['ngTransclude'] || 'sibling';

      switch ( iScopeType ) {
        case 'sibling':
          $transclude( function( clone ) {
            $element.empty();
            $element.append( clone );
          });
          break;
        case 'parent':
          $transclude( $scope, function( clone ) {
            $element.empty();
            $element.append( clone );
          });
          break;
        case 'child':
          var iChildScope = $scope.$new();
          $transclude( iChildScope, function( clone ) {
            $element.empty();
            $element.append( clone );
            $element.on( '$destroy', function() {
              iChildScope.$destroy();
            });            
          });
          break;
      }
    }
  }
})

์•ž์„œ # 8609์—์„œ ์ œ๊ธฐ ํ•œ ๋ฌธ์ œ๊ฐ€์ด ์Šค๋ ˆ๋“œ์˜ ์ค‘๋ณต์œผ๋กœ ์ข…๊ฒฐ๋˜์—ˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์— DOM์˜ ์™ธ๋ฉด ๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋ฒ”์œ„๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ํ˜„์žฌ ๋ฐฉ์‹์€ ๋งค์šฐ ๋น„๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค!
๊ฐ๋„์˜ ์ •์ƒ์ ์ธ ํ๋ฆ„์— ์–ด๊ธ‹๋‚˜๋ฏ€๋กœ ๊ณ ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

๋‹ค์Œ์€ ์ด์ „ ๋ฌธ์ œ์˜ ๋ฐœ์ทŒ ๋ณธ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋‚ด ๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์€ ๋ฉ์–ด๋ฆฌ ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฒ”์ฃ„์ž๋Š”์ด ์ง€์นจ์— ์žˆ์Šต๋‹ˆ๋‹ค.

     function pane() {
        return {
           restrict: 'E',
           transclude: true,
           scope: {
              title: '@'
           },
           template: '<div style="border: 1px solid black;">' +
              '<div style="background-color: gray">{{title}} (isolate scope id: {{$id}})</div>' +
              '<ng-transclude></ng-transclude>' +
              '</div>'
        };
     }

์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ๋•Œ :

<form>
    <pane title='enter your name'>
         <input type='text ngModel='username'>
    </pane>
    <pane title='enter your token'>
         <input type='text ngModel='token'>
   </pane>


๊ทธ ๊ฒฐ๊ณผ๋Š” ํŠนํžˆ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋†€๋ผ ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ (๊ณผ๋„ํ•˜๊ฒŒ) ๋‹จ์ˆœํ™” ๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋ช‡ ๊ฐ€์ง€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜์‹ญ์‹œ์˜ค.)

์ด๊ฒƒ์€์ด ๋ฌธ์ œ๊ฐ€ ์‹œ์ž‘๋œ ๊ณณ๊ณผ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ด์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•œ ๋ฌธ์ œ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค!

dom ์š”์†Œ๋กœ ๋ฒ”์œ„๋ฅผ ๋Œ€์‹ ํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ”์œ„๊ฐ€ ์ •๋ง๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๋Š” ngTransclude ์š”์†Œ์— ngController ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ngTransclude ์— ํ”Œ๋ž˜๊ทธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋Š” # 5489 ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ œ๊ณต๋˜๋Š” ์†”๋ฃจ์…˜ caitp์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1์€ํ•˜์ง€ ๋ง๋ผ๊ณ  ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ์—๋„ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์˜ˆ http://plnkr.co/edit/Wn81IBkE87vtigXvjmIa?p=preview

+1

+1

+1

+1

+1

+1

+1

+1

+1-์ด์— ๋Œ€ํ•œ ์œ ํšจํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@nikkwong ,์ด ์Šค๋ ˆ๋“œ์— ๊ฒŒ์‹œ ๋œ ๋ช‡ ๊ฐ€์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํ”Œ๋ ํฌ ์—์„œ ๋งํฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋„์ฐฉํ•˜๋”๋ผ๋„ 1.5.x๊นŒ์ง€๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ์ „์— ๊ฑฑ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ์ฃผ๋œ ์ด์œ  (๊ฒฉ๋ฆฌ ๋ฒ”์œ„์˜ ํ˜•์ œ ๋˜๋Š” ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์ œ์™ธ ๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋‚˜์˜ค๋Š” ์›๋ž˜ ๋ฒ”์œ„์˜ ์ž์‹์ด๋ผ๊ณ  ํ•จ)๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ”Œ ๋Ÿฐ์ปค๋ฅผ ๋น„๊ตํ•˜์‹ญ์‹œ์˜ค.
http://plnkr.co/edit/3NVxdYGy1AFDvD0M2BYI?p=preview

์›๋ž˜ transclusion์ด ์˜จ ๊ณณ์—์„œ ๋ฒ”์œ„๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ :
http://plnkr.co/edit/MXFz2awcqwQQ7R882Xwz?p=preview

๋‘ ๋ฒˆ์งธ ๋ฒ„์ „์—์„œ๋Š” ํŠธ๋žœ์Šค ํด๋ฃจ ๋“œ ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ผœ๊ณ  ๋Œ ๋•Œ ๊ฐ์‹œ์ž ์ˆ˜๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@petebacondarwin ํ™•์‹คํžˆ ์ƒˆ๋กœ์šด ๋ฒ”์œ„ ์—ฌ์•ผํ•˜๋ฏ€๋กœ ๊ฐ์‹œ์ž์™€ ํ•จ๊ป˜ ํŒŒ๊ดด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. transclusion์— ๋Œ€ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์Šฌํ””์€ ng-transclude๊ฐ€ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„์˜ ํ˜•์ œ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ”„๋กœํ†  ํƒ€์ž… ์ƒ์†์„ ํ†ตํ•ด ๋ณ€์ˆ˜์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‚˜ ์š”?

์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๊ฐ€ ์•ต๊ทค๋Ÿฌ 2 ์›จ์ด ๋ฐ”์ธ๋”ฉ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋Š” ๊ฒƒ์„ ๋‹ค์‹œ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ng-transclude๋Š” ์ž์‹ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ ng-repeat๋Š” ์ž์‹ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋™์ผํ•œ ์ƒํ™ฉ์—์„œ ์ž์‹ ์„ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ์ˆ˜๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ๋„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ์–‘๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ ๋ฌธ์ œ๋Š” ๊ฐ์ฒด ์†์„ฑ์œผ๋กœ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ฐ์ฒด ์ž์ฒด์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ : http://plnkr.co/edit/Wn81IBkE87vtigXvjmIa?p=preview

์†”๋ฃจ์…˜ : http://plnkr.co/edit/KShClgQVwIjscXPzVRwR?p=preview

์™„๋ฒฝํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ด๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์€ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์œผ๋ฉฐ ์†์„ฑ์— ๋Œ€ํ•ด ์–‘๋ฐฉํ–ฅ ๋ฐ”์ธ๋”ฉ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

์ด ์†”๋ฃจ์…˜์€ ์ด๋ฏธ mbykovskyy์— ์˜ํ•ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์„ ๋•Œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ด๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@petebacondarwin ๋ณด์œ  ๋ฒ”์œ„๊ฐ€ ํŒŒ๊ดด ๋  ๋•Œ๊นŒ์ง€ ์ผ์‹œ์ ์ธ ๋ˆ„์ถœ ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— (a plunk) [http://plnkr.co/edit/Q587WQnX0u0u7JjhtCxa?p=preview]๋Š” transclude-holding-scope๋ฅผ ์ „ํ™˜ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ํ•ด์ œ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„์ด ๊ฐ€๋Šฅํ•œ ๋ˆ„์ถœ์— ๋Œ€ํ•œ ๋ฌธ์„œ์˜ ํฐ Waring์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  JS ๋ˆ„์ถœ์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ ๊ณ ์น  ๋•Œ๊นŒ์ง€ ์ผ์‹œ์ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค ;-)
2015 ๋…„ 9 ์›” 8 ์ผ 16:41, "Sander Elias" [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@petebacondarwin https://github.com/petebacondarwin
๋ณด์œ  ๋ฒ”์œ„๊ฐ€ ํŒŒ๊ดด ๋  ๋•Œ๊นŒ์ง€ ์ผ์‹œ์ ์ธ ๋ˆ„์ถœ. ์—ฌ๊ธฐ (a
plunk) [http://plnkr.co/edit/Q587WQnX0u0u7JjhtCxa?p=preview]
transclude-holding-scope๋ฅผ ์ „ํ™˜ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด
์ž˜ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํฐ Waring
์ด ๊ฐ€๋Šฅํ•œ ๋ˆ„์ถœ์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ• ๊นŒ์š”?

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/angular/angular.js/issues/5489#issuecomment -138603298
.

@SanderElias Angular ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž๋Š” ํ•˜๋ฃจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฐ”์˜๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๋‚ฎ ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ ํŽ˜์ด์ง€์— ๋ฌด์—‡์„ ์˜ฌ๋ฆด ์ง€ ๋งค์šฐ์ฃผ์˜ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋ˆ„์ถœ ๊ฐ€๋Šฅ์„ฑ์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

@troch -transclusion์€ ์‹ค์ œ๋กœ transcluded ์ฝ˜ํ…์ธ ๊ฐ€ ์›๋ž˜ ๋ฐœ๊ฒฌ ๋œ ๋ฒ”์œ„์˜ ํ•˜์œ„ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ๋Œ์•„๊ฐ€์„œ (ํ™•์‹คํžˆ 1.2์—์„œ) ํ˜„์žฌ ์ง€์‹œ๋ฌธ ๋ฒ”์œ„์˜ ๋ถ€๋ชจ์˜ ์ž์‹์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊นŠ์ด ์ค‘์ฒฉ ๋œ transclusion์ด ์‹ค์ œ๋กœ ์ž˜๋ชป๋œ transclusion ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

@petebacondarwin ์— ๋™์˜ํ•ด์•ผํ•˜๋ฉฐ ํ˜„์žฌ ๋™์ž‘์ด 100 % ์ง๊ด€์ ์ด์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ํ˜„์žฌ ๋™์ž‘์ด ๋ˆ„์ถœ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์žฅ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ Wont Fix๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๋…„ ์ „์— Ember๋กœ ์ „ํ™˜ ํ•œ ๊ฒƒ์€ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค. :)

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