2013-05-11 3 views
0

У меня есть директива table-div, которая отображает заголовок и тело таблицы. Каждая строка внутри тела может добавить некоторые дополнительные функции или нет. В случае, если он обладает этой способностью, тогда для включения некоторых данных и привязки к сфере действия его родительской директивы должна быть включена пользовательская директива.Динамически включать директиву в другую директиву

Директива таблицы ДИВ:

<div>here is header</div> 
<div ng-repeat="row in tbody"> 
    <table-div-row data="row"></table-div-row> 
    <table-div-row data="row" directive="deletable"></table-div-row> 
    <table-div-row data="row" directive="editAvailable"></table-div-row> 
</div> 

Моя директива таблицы Div-строка выглядит вдоль линий этого

<div> 
    <p>some data here</p> 
    <div class="{{directive}}"></div> 
</div> 

И моя editAvailable директива выглядит следующим образом

<div> 
    <p> name: {{parentDirectiveScope.name}}</p> 
    <button>edit</button> 
    <button>save</button> 
</div> 

Как это будет достигнуто? В основном проблема связана с тем, что она связывает эту переменную, которая содержит имя директивы, и оценивает ее как-то, чтобы фактически отображать директиву. Это возможно ?

+0

Пробовал с директивой класса? – Ven

+0

это был именно то, что я пробовал

user253530

ответ

0

Обнаружил, что я могу использовать директиву ng-include для включения файла шаблона. В основном мой стол-ДИВ-строка будет выглядеть

<div> 
    <p>some data here</p> 
    <ng-include src="{{directive}}"></ng-include> 
</div> 

в {{}} директива будет на самом деле URL в шаблон.

И тогда мой editAvailable «директива» будет выглядеть как

<div ng-controller="EditAvailableCtrl"> 
    <p> name: {{name}}</p> 
    <button>edit</button> 
    <button>save</button> 
</div> 

Я должен создать EditAvailableCtrl, который действует как директива (то есть он имеет взаимодействие Dóm, а).

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

Я открыт для предложений, может быть, это не очень хорошая практика, но это делает для меня работу.

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