이유는 무엇입니까 replace=true
또는 replace=false
아래의 코드에 영향을주지?
replace = false 일 때 “일부 기존 컨텐츠”가 표시되지 않는 이유는 무엇입니까?
아니면 좀 더 겸손하게 말하면 replace=true/false
지시문 의 기능과 사용 방법을 친절하게 설명해 주 시겠습니까?
예
JS / Angular :
<script>
angular.module('scopes', [])
.controller('Ctrl', function($scope) {
$scope.title = "hello";
})
.directive('myDir', function() {
return {
restrict: 'E',
replace: true,
template: '<div>{{title}}</div>'
};
});
</script>
HTML :
<div ng-controller="Ctrl">
<my-dir><h3>some existing content</h3></my-dir>
</div>
여기 Plunker에서 확인하십시오.
http://plnkr.co/edit/4ywZGwfsKHLAoGL38vvW?p=preview
답변
replace: true
다음과 같은 DOM을 얻었을 때 :
<div ng-controller="Ctrl" class="ng-scope">
<div class="ng-binding">hello</div>
</div>
반면에 다음과 replace: false
같이 얻을 수 있습니다.
<div ng-controller="Ctrl" class="ng-scope">
<my-dir>
<div class="ng-binding">hello</div>
</my-dir>
</div>
따라서 replace
지시문 의 속성은 지시문이 적용되는 요소 ( <my-dir>
이 경우)가 유지되어야하는지 ( replace: false
) 지시문의 템플릿을 자식 으로 추가 해야하는지 여부를 나타냅니다 .
또는
지시문이 적용되는 요소를 교체 해야합니다 (replace: true
는 지시문의 템플릿 ).
두 경우 모두 요소 (지시문이 적용되는)의 자식이 손실됩니다. 요소의 원본 콘텐츠 / 자식을 유지하려면 변환해야합니다. 다음 지시문이이를 수행합니다.
.directive('myDir', function() {
return {
restrict: 'E',
replace: false,
transclude: true,
template: '<div>{{title}}<div ng-transclude></div></div>'
};
});
이 경우 지시문의 템플릿에 속성이있는 요소 (또는 요소)가있는 ng-transclude
경우 해당 내용 은 해당 요소 (지시문이 적용되는)의 원래 내용으로 대체됩니다.
translusion의 예를 참조하십시오 http://plnkr.co/edit/2DJQydBjgwj9vExLn3Ik?p=preview
translusion에 대해 자세히 알아 보려면 이것을 참조하십시오 .
답변
replace:true
더 이상 사용되지 않음
문서에서 :
replace
([DEPRECATED!], 다음 주요 릴리스 (예 : v2.0)에서 제거됩니다.)템플릿으로 대체해야하는 항목을 지정합니다. 기본값은
false
.
true
-템플릿이 지시문의 요소를 대체합니다.false
-템플릿이 지시문 요소의 내용을 대체합니다.
GitHub에서 :
Caitp–에 대해 알려진 매우 어리석은 문제가 있기 때문에 더 이상 사용되지 않습니다.이 중
replace: true
상당수는 합리적인 방식으로 해결할 수 없습니다. 주의해서 이러한 문제를 피하면 더 많은 권한을 얻을 수 있지만 신규 사용자의 이익을 위해 “이렇게하면 골치 아픈 일 이니,하지 마세요”라고 말하는 것이 더 쉽습니다.
최신 정보
참고 :
replace: true
주로 여기에 나열된 문제로 인해 더 이상 사용되지 않으며 사용하지 않는 것이 좋습니다. 새로운 Angular에서 완전히 제거되었습니다.
교체 문제 : true
자세한 내용은