Я хотел бы создать директиву панели с динамическим контроллером и шаблоном, чтобы я мог отображать контекстные параметры в своем приложении. Например, нажав кнопку "Изменить шрифт", вы увидите "Параметры шрифта".
Я не могу найти много документации, но похоже, что теперь можно указать имя контроллера в директиве, используя атрибут name
:
app.directive('dynamicPanel', function() {
return {
restrict: 'A',
scope: {
config: '=dynamicPanel'
},
controller: '@',
name: 'ctrlName'
};
});
Я надеялся, что, учитывая конфигурацию панели следующим образом:
vm.panel = {
controller: 'FontCtrl',
template: 'font.template.html'
};
Я мог бы затем загрузить панель следующим образом:
<div class="options-panel"
ng-if="vm.panel"
dynamic-panel="vm.panel"
ctrl-name="{{ vm.panel.controller }}"
ng-include="vm.panel.template">
</div>
К сожалению, это не работает. Я получаю ошибку. Badly formed controller string
. Также похоже, что только текстовое связывание работает для атрибута name
(@
).
Есть ли способ привязать атрибут name
к динамическому значению или альтернативе динамическим контроллерам в директивах.
Я понял это в конце, обняв шаблон компонента. Регистрируя панели параметров как индивидуальные директивы со своими собственными контроллерами, это просто стало вопросом рендеринга разметки директивы, например <font-options/>
а затем компиляции "динамической панели".