在以下情况下如何使用嵌入。目的是在 html(部分)文件中使用标记,而不是在模板中定义它(在指令内)。
我在这里找到了一个很棒的树指令。(来源)原文:http: //jsfiddle.net/n8dPm/
我没有在指令中定义模板,而是尝试使用嵌入的内容。我还将 Angular 更新为 1.2.0.rc2。更新:http: //jsfiddle.net/aZx7B/2/
得到以下错误
TypeError:对象 [object Object] 的属性“$transclude”不是函数
代码:
module.directive("tree", function($compile) {
return {
restrict: "E",
transclude: true,
scope: {family: '='},
template:
'<ul>' +
'<li ng-transclude></li>' +
'<li ng-repeat="child in family.children">' +
'<tree family="child"></tree>' +
'</li>' +
'</ul>',
compile: function(tElement, tAttr) {
var contents = tElement.contents().remove();
var compiledContents;
return function(scope, iElement, iAttr) {
if(!compiledContents) {
compiledContents = $compile(contents);
}
compiledContents(scope, function(clone, scope) {
iElement.append(clone);
});
};
}
};
});
<div ng-app="myapp">
<div ng-controller="TreeCtrl">
<tree family="family">
<p>{{ family.name }}</p>
</tree>
</div>
</div>
编辑:
在大卫的建议下,做了一些改动。http://jsfiddle.net/aZx7B/3/
现在,它打印出来了,家长。改变,family
- >treeFamily
虽然没有工作