Угловая директива с динамическим контроллером

0

Я хотел бы создать директиву панели с динамическим контроллером и шаблоном, чтобы я мог отображать контекстные параметры в своем приложении. Например, нажав кнопку "Изменить шрифт", вы увидите "Параметры шрифта".

Я не могу найти много документации, но похоже, что теперь можно указать имя контроллера в директиве, используя атрибут 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 к динамическому значению или альтернативе динамическим контроллерам в директивах.

Теги:

1 ответ

0

Я понял это в конце, обняв шаблон компонента. Регистрируя панели параметров как индивидуальные директивы со своими собственными контроллерами, это просто стало вопросом рендеринга разметки директивы, например <font-options/> а затем компиляции "динамической панели".

http://plnkr.co/edit/Ickkz1GGbDdSbUOUcvfj?p=preview

Ещё вопросы

Сообщество Overcoder
Наверх
Меню