我想创建一个带有动态控制器和模板的面板指令,以便我可以在我的应用程序中显示上下文相关的选项。例如,单击"字体"设置将显示"字体选项"。
我无法找到相关文档,但现在看来可以使用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
属性绑定到动态值或指令中动态控制器的替代。
答案 0 :(得分:0)
我最终通过拥抱组件模式来理解它。通过将我的选项面板作为单独的指令注册到他们自己的控制器,它只是成为渲染指令标记的问题,例如<font-options/>
然后编译&#34;动态面板&#34;。