2015-08-04 2 views
0

У меня есть вложенные шаблоны angular.js. Каждый шаблон имеет свою собственную директиву. На основе данных, переданных на ParentTemplate, angular.js должен вызывать соответствующую директиву.AngularJS использовать директиву-имя в области как строка

<div class="parent-template"> 
    <div class="{{childTemplate}}"></div> 
    <div class="template1"></div> 
</div> 

Допустим, что $scope.childTemplate = template1. Оба div оценивают одно и то же содержимое <div class="template1"></div>, но только второй div вызывает директиву, чтобы показать шаблон, как ожидалось.

мне нужен динамический способ вызвать соответствующую директиву шаблона:

Вот директива для template1

angular.module('myApp').directive('template1', function(){ 
return { 
    restrict: 'C', 
    templateUrl: 'templates/template1.html' 
} 
}); 

директив для других шаблонов директив работают аналогично.

+3

Основываясь на том, что показано, оба местоположения находятся в одном объеме, поэтому вы упростили пример html. Необходимо предоставить более подробную информацию об этих директивах и показать правильное гнездование. – charlietfl

+0

отредактировал мой вопрос @charlietfl. Если я заменил {{childTemplate}} в div-elem на template1, все будет работать как исправлено. Переменная {{childTemplate}} просто не заменяется на правильное значение –

+0

Где код директивы? Вы упомянули передачу данных в директиву, но ни один не показан. Html все еще показывает, что оба экземпляра 'childTemplate' находятся в одной области. Мы не можем воспроизвести или оценить вашу проблему с тем, что показано – charlietfl

ответ

0

Вы пытаетесь установить класс элемента DOM. Вы можете сделать это с помощью ngClass.

В противном случае, если вы хотите установить свою директиву как атрибут элемента DOM. Как это: <div template1> </div>

Вы можете попробовать этот способ:

var myEl = angular.element(document.querySelector('#divID')); 
    myEl.attr('myattr',"attr val"); 
0

Try:

<div ng-class="childTemplate"><div> 
+0

Я уже пробовал. Оценивает право, но не вызывает директиву ... –

0

ли вы когда-нибудь решить эту проблему? У меня есть подобный вызов, который я в настоящее время решить с помощью нг-включают в себя, например, так:

<div class="parent-template"> 
    <div ng-include="'templates/template1'"></div> 
    <div class="template1"></div> 
</div> 

Это работает для вашего примера, но становится все более сложным, когда директива делает больше, чем просто обертывание шаблон, например работа с DOM или добавление контроллера.

Что вы можете сделать в этом случае - использовать директиву внутри шаблона.

Однако это чувствует все любопытное Hacky, я хотел бы более прямой подход

Это было для меня, все зажгли по статье о реакции плагинов, в котором вы в основном пронумеровать по набору реагировать компонент для получения набора функций: https://nylas.com/blog/react-plugins

Смежные вопросы