从指令Angular docs,我看到compile函数有3个参数,其中一个是transclude.文档提供的唯一解释是:
transclude - 一个transclude链接函数:function(scope,cloneLinkingFn).
我试图了解你在克隆链接功能中会做些什么.我甚至不知道哪些参数传递给它.我找到了一个示例,其中有一个参数被称为cloneHTML元素.还有其他参数吗?这究竟是哪个HTML元素?我也在考虑使用transclude: 'element'我的指令.执行这些问题的答案时,用改变'element'来代替true?
我用简单的例子来理解翻译,但我似乎无法找到更复杂的例子,尤其是transclude: 'element'.我希望有人能对这一切提供更全面的解释.谢谢.
如何在下面的情况下使用包含.目的是在html(partials)文件中使用标记,而不是在模板中定义它(在指令内).
我在这里找到了一个很棒的树指令.(来源)原文: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"> …Run Code Online (Sandbox Code Playgroud)