2015-10-29 99 views
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屬性綁定到動態值或指令中動態控制器的替代方法。

+0

看看這個jsFiddle。 http://jsfiddle.net/Pawel_Gerr/y22ZK/ –

回答

0

我想通過採用組件模式最終得出結論。通過將我的選項面板作爲單獨的指令註冊到它們自己的控制器中,它簡單地成爲了渲染指令標記的問題,例如<font-options/>然後編譯「動態面板」。

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