Динамическое включение шаблона угловой директивы
Поэтому я хочу сделать директиву для автоматического включения вкладок и контента, но я не могу получить контент, хранящийся в 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'"