I have a directive that transcludes some HTML fetched from CMS into my AngularJS app. When I add a script tag into my directive and add a console message to it, the message is being logged twice.
Here's my directive:
angular.module('my-directive', [])
.directive('myDirective', function () {
return {
restrict: 'E',
replace: false,
transclude: true,
template: '<section class="my-directive" ng-transclude>
</section>'
};
});
I am using it like :
<my-directive>
<script>
console.log("ABCD");
</script>
</my-directive>
Expected result: "ABCD" logged once.
Actual result: "ABCD" logged twice.
Can anyone explain why this happens?
Answer is for first time on
document.loadthe<script>...</script>run out of your directive it's not depend on your directive at all.and for 2nd time your directive loaded so you have twice console.
If you want to check use
$timeoutto load your template with delay:How to solve this question?
You don't need
scriptin the directive! and if you mean customize script for each directive it's another question.Put your script on
linkin your directive: