저는 Angular에 아직 익숙하지 않아 바보 같은 질문이 있으면 사과드립니다 ... transclusion을 사용하는 사용자 지정 지시문이 있습니다. 데이터가 작품을 바인딩 왜 부모 요소에 NG-컨트롤러를 할당하면,하지만 난 그것에 직접 컨트롤러를 할당 할 때 이해하기 :transclusion을 사용하는 사용자 지정 지시문에서 ng-controller의 각도 범위
코드 :
angular.module('HelloWorld', [])
.controller('HelloController', function($scope) {
$scope.name = 'you'
})
.directive('hello', function() {
return {
restrict: 'E',
transclude: true,
template: '<ng-transclude />'
};
});
HTML :
<!-- why does this one work? -->
<div ng-controller="HelloController">
<hello>Hi there, {{name}}!</hello>
</div>
<!-- but not this one? -->
<hello ng-controller="HelloController">
<p> Hi there, {{name}}!</p>
</hello>
Plunker : https://plnkr.co/edit/ICztHcKU4W2EgFmy8OqQ?p=preview
어떤 아이디어?
알겠습니다 ... 감사합니다. 이 경로를 시작한 원래의 이유는 Angular Material의 md-button 지시문 (https://material.angularjs.org/latest/api/directive/mdButton)을 사용하고 ng 컨트롤러를 하나의 데이터에 할당하려고했기 때문입니다 그것의 제목에 묶어 라. - 내가 컨트롤러를 수평 위로 올릴 때까지 제목이 나타나지 않았다. 그런 종류의 유스 케이스가 단지 일반적으로 예상되지 않거나 추천 된 것일까 요? – chinabuffet
컨트롤러가 HTML 요소를 제어합니다. 컴파일 전에 지시문 (제한 E 포함)은 HTML 요소가 아닙니다. 지시어의 속성으로 컨트롤러를 전달하는 것은 바람직하지 않습니다. 왜냐하면 여러분은 코드를 가지고있을 것이기 때문입니다. – gyc
@chinabuffet 컨트롤러 (구성 요소와 유사)를 가지고 지시문을 필요로하고 더 독립적이고 재사용 가능하도록 만들려면 controller 속성을 사용하십시오. – gyc