Directive that marks the insertion point for the transcluded DOM of the nearest parent directive that uses transclusion. Any existing content of the element that this directive is placed on will be removed before the transcluded content is inserted.
function Ctrl($scope) {
$scope.title = 'Lorem Ipsum';
$scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
console.log('scope1', $scope);
}
在derective中添加日志
app.directive('pane', function() {
return {
restrict: 'EA',
template:
'<div style="border: 1px solid black;">' +
'<div class="title" style="background-olor: gray">{{title}}</div>' +
'</div>',
replace: true,
transclude: true,
controller: [
'$scope', '$element', '$transclude',
function ($scope, $element, $transclude) {
console.log('scope2', $scope)
$transclude(function(clone, scope) {
console.log('scope3', scope);
var title= element.find('title');
var time = clone.find('.time');
var type = clone.find('.type');
var text= clone.find('.content');
title.append(time);
element.append(type);
element.append(text)
});
}
],
};
});
在控制台可以看到
scope1 a {$id: "003", this: a, $$listeners: Object, $parent: e, $$childTail: null…}
scope2 e {$id: "004", $$childTail: null, $$childHead: null, $$prevSibling: null, $$nextSibling: null…}
scope3 a {$id: "005", this: a, $$listeners: Object, $parent: a, $$childTail: null…}
点开 scope2 和 scope3,就能看到 $parent 的 Id 为003,这就印证了我们的观点。