Скомпилировать динамический шаблон с помощью ng-include

Я застрял в следующем случае. У меня есть динамический шаблон (template.html) с ng-include.

<div data-ng-include data-src="childTemplate">{{ var }}</div>

если я попытаюсь сделать:

$scope.childTemplate = 'child.html';
tpl = $compile($templateCache.get('template.html'))($scope);

в этом случае tpl содержит только скомпилированный родительский шаблон без дочернего шаблона. Я пытался сделать

<div data-ng-include data-src="childTemplate" onload="templateLoaded()"></div>

а также

tpl = $compile($templateCache.get('template.html'))($scope);
$scope.contentLoaded = function() {
    $compile($templateCache.get('child.html'))($scope)
}

в этом случае child.html загружен, но не включен в родительский шаблон. Как решить задачу? Спасибо!

1 ответ

tpl теперь элемент скомпилирован в вашей DOM. Что вы должны сделать, это после child.html компилируется, чтобы добавить его в вашу DOM.

Таким образом, вы можете сделать следующее:

tpl = $compile($templateCache.get('template.html'))($scope);
$scope.contentLoaded = function() {
    var child = $compile($templateCache.get('child.html'))($scope);
    tpl.appendChild(child);
}

Это может сработать, если вы хотите добавить child.html шаблон как последний из tpl дети (если нет, вы должны ориентироваться).

Другие вопросы по тегам