Динамическое включение шаблона угловой директивы

Поэтому я хочу сделать директиву для автоматического включения вкладок и контента, но я не могу получить контент, хранящийся в partials/tabs/tab[x].html,

AvailableTabs - константа, определенная как массив:

myApp.constant("availableTabs", [
    {name:'tab1', title:'One', content:'partials/tabs/tab1.html'},
    {name:'tab2', title:'Two', content:'partials/tabs/tab2.html'},
    {name:'tab3', title:'Three', content:'partials/tabs/tab3.html'}
]);

Моя директива определяет правильную вкладку для включения и пытается также включить ее содержимое:

 myApp.directive('myTabs',['availableTabs','$templateCache', function(availableTabs, $templateCache) {
        return {
            restrict: 'A',
            template: function (elem, attr) {
                for (index = 0; index < availableTabs.length; ++index) {
                    if(availableTabs[index].name == attr.myTabs) {
                        return '<tab heading="'+availableTabs[index].title+'" ng-show="1"> ' +
                                '<div ng-include="'+availableTabs[index].content+'"></div>'+
                            '</tab>';
                       //return '<tab heading="'+availableTabs[index].title+'" ng-show="1"> ' +
                       //    $templateCache.get(availableTabs[index].content)+
                       //    '</tab>';
                    }
                }
            },
    };
}]);

Проблема в том, что содержимое вкладки пустое и у меня нет ошибок.

Мой HTML-код выглядит следующим образом:

<tabset>
  <div my-tabs="tab1"></div>
  <div my-tabs="tab2"></div>
  <div my-tabs="tab3"></div>
</tabset>

Я пробовал делать инъекции $templateCache в директиве но возвращается undefined при извлечении контента я также пытался взять путь относительно пути скрипта, но все же undefined,

1 ответ

Решение

Потому что ты пропустил ' в ng-include, для передачи имени шаблона как string, Так как ng-include директива требует string в качестве ввода.

ng-include="\''+availableTabs[index].content+'\'"

будет отображаться как ниже

ng-inlcude="'partials/tabs/tab1.html'"