I am working on a custom directive for which I will be getting the template from controller upon tab click for compilation. The following are my template, custom directive and html code.
Controller :
var template = '';
$scope.onTabClick = function(eachTab) {
if (eachTab.id == 1) {
template = ' <div class="innerChartsDiv"> <div class="col"> <p class="graphtitle"> {{title1Text}}</p> <c3-simple id="dashboard1Data" config="dashboard1Data"></c3-simple> </div> <div class="col"> <p class="graphtitle"> {{title2Text}}</p> <c3-simple id="dashboard2Data" config="dashboard2Data"></c3-simple> </div> </div> ';
}
if (eachTab.id == 2) {
template = ' <div class="innerChartsDiv"> <div class="col"> <p class="graphtitle"> {{title6Text}}</p> <c3-simple id="dashboard6Data" config="dashboard6Data"></c3-simple> </div> <div class="col"> <p class="graphtitle"> {{title10Text}}</p> <c3-simple id="dashboard10Data" config="dashboard10Data"></c3-simple> </div> </div> ';
}
if (eachTab.id == 3) {
template = ' <div class="innerChartsDiv"> <div class="col"> <p class="graphtitle"> {{title16Text}}</p> <c3-simple id="dashboard16Data" config="dashboard16Data"></c3-simple> </div> <div class="col"> <p class="graphtitle"> {{title4Text}}</p> <c3-simple id="dashboard4Data" config="dashboard4Data"></c3-simple> </div> </div> ';
}
}
My Custom Directive :
app.directive('customCharts', ['$compile', function($compile) {
return {
restrict: 'EA',
scope: {
dashboard1Data: '=',
title1Text: '=',
dashboard2Data: '=',
title2Text: '=',
template: '='
},
link: function(scope, element, attrs) {
scope.$watch('templatedyn', function() {
var parent = angular.element(document.querySelectorAll('.customChartsDiv')) // DOM element where the compiled template can be appended
var linkFn = $compile(scope.template);
var content = linkFn(scope);
parent.append(content);
});
}
}
}]);
In jsp page I have :
<div class="customChartsDiv">
<div custom-charts dashboard1-data="dashboard1Data" title1-text="title1Text" dashboard2-data="dashboard2Data" title2-text="title2Text" template="template"></div>
</div>
My custom directive is working fine and displaying charts properly when in $scope.onTabClick
function, if eachTab.id == 1
condition is satisfied. How can I make directive generic so that it will work even if the eachTab.id == 2
or eachTab.id == 3
conditions are satisfied?