John Lindquist 자습서에서는 transclusion을 사용하여 지시문에서 일부 내용을 가져 와서 원하는 위치에 넣습니다.angularjs에서 transclusion을 어떻게 사용합니까?
하지만 문서는 translude 함수에 대해 이야기하고이를 컨트롤러 및 컴파일 함수에 전달합니다. 그렇다면 transclusion은 무엇이며 어떻게 사용해야합니까?
John Lindquist 자습서에서는 transclusion을 사용하여 지시문에서 일부 내용을 가져 와서 원하는 위치에 넣습니다.angularjs에서 transclusion을 어떻게 사용합니까?
하지만 문서는 translude 함수에 대해 이야기하고이를 컨트롤러 및 컴파일 함수에 전달합니다. 그렇다면 transclusion은 무엇이며 어떻게 사용해야합니까?
egghead.io에 대한 Johns "Zippy Building"자습서는 내가 본적이있는 최고의 설명입니다. 두 문장 모두 옳았습니다. John은 예제를 제공하지만, 뒤에서 일어나는 일은 마크 업의 html이 템플릿과 컴파일러를 통해 놓이는 것입니다. 그의 튜토리얼에서, John은 실수로 템플릿의 내용을 남겨두고 angle의 컴파일러가 마크 업 html과 템플릿 html을 어떻게 연결하는지 볼 수 있습니다. 기본 지침을 만들 때
는, 트랜스 클루 전은 간단합니다 : 템플릿이 ngTransclude
지시자를 포함
module.directive('myTransDir', function() {
return {
transclude: true,
scope: true,
replace: true,
template: '<div><h1>Hello!</h1><div ng-transclude></div></div>',
};
});
때문에, 자동으로 나를 위해 내용을 transclude 것입니다. 나는이처럼 사용하는 경우 :
<div my-trans-dir>
<p>Some Content</p>
</div>
생성 된 HTML은 다음과 같습니다
<div>
<h1>Hello!</h1>
<div>
<p>Some Content</p>
</div>
</div>
느린'대체 '는 무엇입니까? 오류가 발생하지 않습니까? – Lukas
@ 루카스 아니, 왜?"느린"것이 무엇을 의미하는지 모르겠습니다. 포함 된 템플릿은 자체 포함되었으므로 지시문이 적용된 dom 요소를 템플릿 대신 * 포함하는 대신 해당 요소를 포함하는 것으로 변경했습니다. –
귀하의 대답은 올바른 방법이지만이 방법으로는 컴파일되지 않습니다. 속성을'replace '할 값을 할당하거나 완전히 제거해야합니다. –
@Josh 이미 ngTransclude 덮여. 이것은 중계를위한 "일반적인 사용 사례"입니다.
는 또한 문서에 이러한 진술에 대해 질문했다 :
컨트롤러 - 컨트롤러 생성자 함수 ... 컨트롤러는 다음과 같은 주민들과 주입니다
:
...
$의 transclude을 - 올바른 transclusion 범위에 미리 바인딩 된 transclude 링킹 함수 : function (cloneLinkingFn).
및
템플릿 DOM을 변화와 컴파일 기능 거래 ...
컴파일 함수는 다음 인수를 사용합니다.
...
transclude - 연결 기능을 transclude : function (scope, cloneLinkingFn).
나는 이러한 밀교 사용 사례를 고려합니다. 나는 개인적에서만 유래에 이들 중 하나 언급을 보았다, 나는 당신을 거기에서 참조 할 수 있습니다 :
What exactly do you do with the transclude function and the clone linking function?
견적을 @blesh에서 "트랜스 클루 전이 두 가지 방법이 모든 것을 제어 할 수있는 기능이 제공 할 수 있습니다 프로세스에 대한 프로그래밍 방식의 액세스를 통해 귀하를 소개합니다. "
업데이트 : 내 소개에 대해 좋은 blog post을 찾았습니다.
+1 이것은 좋은 추가 정보입니다, 마크. 나는 한번'$ transclude '를 한 번 사용해 보았지만 물었다. :-) –
@Josh, 가능하다면 하나의 유스 케이스를 공유하십시오. –
예를 들어 템플리트가없는 지시문에 코드를 붙이거나 부모가 아닌 다른 범위를 사용하여 코드를 추가하는 데 사용할 수 있습니다. 이전에 angular-ui/bootstrap의 툴팁 플러그인 인 [here] (https://github.com/angular-ui/bootstrap/blob/master/src/tooltip/tooltip.js#L22)에 사용했지만 더 간단한 것을 위해 그것을 제거하는 공개 된 [PR] (https://github.com/angular-ui/bootstrap/pull/92). –
아직 답을 수락하지 않은 것으로 나타났습니다. 이 질문에 대한 도움이 더 필요하십니까? –