У меня есть директива с шаблоном элемента, который рекурсивно ссылается на себя, но неправильно отображает детей за пределы первого уровня. Я рассмотрел несколько примеров, и, похоже, мой пример отличается только тем, что мои объекты загружаются страницей через запросы AJAX. Ниже я привел пример проблемы.Угловой рекурсивный шаблон
http://plnkr.co/edit/16wf1MS7vbk3qH8tcE7q?p=preview
<div my-directive></div>
<script id="myDirectiveTemplate" type="text/ng-template">
<h4>
My directive
</h4>
<ul>
<li ng-repeat="item in items" ng-include="'itemTemplate'"></li>
</ul>
</script>
<script id="itemTemplate" type="text/ng-template">
<p>
{{ item.title }}
</p>
<ul ng-if="item.children.length">
<li ng-repeat="child in item.children" ng-include="'itemTemplate'"></li>
</ul>
</script>
Моя директива:
angular.module("myApp")
.directive("myDirective", ["$timeout", function ($timeout) {
var scope;
function loadPage() {
// makes an ajax call here to get a page
scope.items.push({ title: "Item 1", children: [] });
scope.items.push({ title: "Item 2", children: [] });
scope.items.push({
title: "Item 3",
children: [
{
title: "Child 1",
children: []
},
{
title: "Child 2",
children: []
}
]
});
}
return {
restrict: "A",
templateUrl: "myDirectiveTemplate",
controller: ["$scope", function ($scope) {
$scope.items = [];
scope = $scope;
}],
link: function (scope, element, attrs) {
$timeout(function() {
loadPage();
});
}
};
}]);
Хорошо +1 для решения проблемы для данного конкретного примера. Моя проблема в том, что пример «{{item.title}}» действительно представляет собой кучу разметки и угловых выражений, которые я не хочу повторять. Вернемся к чертежной доске. –
В этом случае вы можете использовать сторонний JS, например https://github.com/wix/angular-tree-control Демо здесь http://jsfiddle.net/eu81273/8LWUc/18/. До времени я попытаюсь свести к минимуму разметку, чтобы повысить ее выше, учитывая выборку. – user3249448
Я обновил свой образец с меньшей разметкой. Этот образец содержит два решения. Из этого старого, т. Е. «Образец 1», а новое решение - «образец 2». – user3249448