У меня есть две директивы
app.directive('panel1', function ($compile) {
return {
restrict: "E",
transclude: 'element',
compile: function (element, attr, linker) {
return function (scope, element, attr) {
var parent = element.parent();
linker(scope, function (clone) {
parent.prepend($compile( clone.children()[0])(scope));//cause error.
// parent.prepend(clone);// This line remove the error but i want to access the children in my real app.
});
};
}
}
});
app.directive('panel', function ($compile) {
return {
restrict: "E",
replace: true,
transclude: true,
template: "<div ng-transclude ></div>",
link: function (scope, elem, attrs) {
}
}
});
И это мое мнение:
<panel1>
<panel>
<input type="text" ng-model="firstName" />
</panel>
</panel1>
Ошибка: [ngTransclude: orphan] Недопустимое использование директивы ngTransclude в шаблоне! Нет родительской директивы, для которой требуется переключение. Элемент: <div class="ng-scope" ng-transclude="">
Я знаю, что panel1 не является практической директивой. Но в моем реальном приложении я тоже сталкиваюсь с этой проблемой.
Я вижу некоторое объяснение http://docs.angularjs.org/error/ngTransclude:orphan. Но не знаю, почему у меня есть эта ошибка здесь и как ее решить.
ИЗМЕНИТЬ Я создал страницу jsfiddle. Заранее благодарю вас.
ИЗМЕНИТЬ
I my real app panel1 does something like this:
<panel1>
<input type="text>
<input type="text>
<!--other elements or directive-->
</panel1>
result = >
<div>
<div class="x"><input type="text></div>
<div class="x"><input type="text></div>
<!--other elements or directive wrapped in div -->
</div>