我是角度指令的新手。我在以下指令中有点困惑:
app.directive('person', function() {
return {
restrict: 'EA',
scope: {
header: '='
},
transclude:true,
link: function(scope, element, attrs, ctrl, transclude) {
scope.person = {
name: 'Directive Joe',
profession: 'Scope guy'
};
scope.header = 'Directive\'s header';
transclude(scope.$parent, function(clone, scope) {
element.append(clone);
});
}
};
});
Html:
<body ng-controller="MainCtrl">
<person header="header">
<h2>{{header}}</h2>
<p>Hello, I am {{person.name}} and,</p>
<p>I am a {{person.profession}}</p>
</person>
</body>
此指令中的 scope
用作隔离的。那么scope.$parent
在transclude
函数中代表了什么。如果scope
被隔离,那么scope.$parent
代表$rootScope
。是吗 ?请详细解释。谢谢!
答案 0 :(得分:0)
您的范围。$ parent表示父范围。父范围取决于您放置指令的位置。
例如,如果您有以下内容:
<div ng-controller="MyController">
<person header="Hello World!"></person>
</div>
然后,您的父范围将是MyController中的范围。如果你没有在上面的情况下声明ng-controller,那么scope。$ parent将代表$ rootScope。