Ответ в первый раз на document.load
<script>...</script>
истекает из вашей директивы, это не зависит от вашей директивы вообще.
и во второй раз ваша директива загружена, поэтому у вас есть две консоли.
Если вы хотите проверить, используйте $timeout
для загрузки вашего шаблона с задержкой:
открыть консоль браузера
return {
restrict: 'E',
replace: false,
transclude: true,
template: '<section ng-transclude ng-if="run"></section>',
link: function (scope) {
$timeout(function () {
scope.run = true
}, 2000)
}
};
Как решить этот вопрос?
Вам не нужно script
в директиве! и если вы хотите настроить скрипт для каждой директивы, это другой вопрос.
Поместите ваш скрипт на link
в вашей директиве:
return {
restrict: 'E',
replace: false,
transclude: true,
template: '<section ng-transclude ng-if="run"></section>',
link: function (scope) {
//----your scripts
console.log("ABCD");
}
};