Почему AngularJS $ compile не выполняет код JavaScript? - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь скомпилировать HTML, в котором есть теги style и script.HTML-код правильно скомпилирован и код добавлен в DOM, стиль также работает, но скрипт не выполняется.

Кто-нибудь знает, почему?

См. Код ниже.«Hello World» выделен жирным шрифтом, но window.alert не поднят.

<html>
    <body>
        <div ng-app="myModule">
            <div ng-controller="myController">
                <div compile="html"></div>
            </div>
        </div>

        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script>

        <script type="text/javascript">
        <!--
            var module = angular.module("myModule", []);

            module.controller("myController", function ($scope) {
                $scope.message = "World";

                var html = "<div class='hello'>Hello {{ message }}</div>";
                var style = "<style type='text/css'>.hello { font-weight: bold; }</style>";
                var script = "<script type='text/javascript'>window.alert('Hello from JS!');</script>";

                $scope.html = html + style + script;
            });

            module.directive("compile", function ($compile) {
                return function (scope, element, attrs) {
                    scope.$watch(
                        function (scope) {
                            return scope.$eval(attrs.compile);
                        },
                        function (value) {
                            element.html(value);
                            $compile(element.contents())(scope);
                        }
                    );
                };
            });
        //-->
        </script>
    </body>
</html>
...