Assuming I have a directive \"mydirect\" with a template that contains a lot of divs with a lot of nested classes. For example:
I think the solution to this is simple. But its only a guess. You define the directive by using:
<div class="mydirect></div>
and in your directive definition you use:
restrict: 'E'
The directive is not rendered by Angularjs because Angularjs is looking for something like:
<mydirect></mydirect>
Simply change restrict: 'E'
to restrict: 'C'
.
Angular Directive with Custom CSS.
app.directive('bookslist', function() {
return {
scope: true,
templateUrl: 'templates/bookslist.html',
restrict: "E",
controller: function($scope){
},
link: function(scope, element, attributes){
element.addClass('customClass');
}
}
});
.customClass table{
!background: #ffffd;
}
.customClass td{
border: 1px solid #ffffd;
}
Its much easier to use actual element names to create directives in your DOM rather than trying to use the class method. For two reasons: 1) its much more readable to have <mydirect>
vs <div class="mydirect">
and 2) you can get the same ease of styling by just using the proper css syntax.
Leave your directive just the way it is, except change it to restrict: 'EA'
(docs for that here) and replace: false
, as shown here:
.directive('mydirect', function() {
return {
restrict: 'EA',
replace: false,
template: '-All that Html here-'
};
});
Here are the options you can now use and how to configure the corresponding CSS to get the styles you want, as shown in this jsbin:
Hope that helps.
As per google under and Angular directive creation logic In below example’s description object, setting two config components. First, we’re setting the restrict config option. The restrict option is used to specify how a directive can be invoked on the page.
As we saw before, there are four different ways to invoke a directive, so there are four valid options for restrict:
'A' - <span ng-sparkline></span>
'E' - <ng-sparkline></ng-sparkline>
'C' - <span class="ng-sparkline"></span>
'M' - <!-- directive: ng-sparkline -->