3

I want to insert HTML coming from a JS function, which is executed when the body is loaded. Initially the body is empty.

This HTML has AngularJS commands, but the problem is that AngularJS doesn't parse the HTML.

<!doctype html>
<html ng-app>
    <head>
        <script>
            function loadHTML(){
                html = '<ul ng-controller="phoneCtrl"><li ng-repeat="phone in phones">{{phone.name}}<p>{{phone.snippet}}</p></li></ul><script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script'+'><script src="controllers.js"></script'+'>';
                document.write = html;
            }
        </script>
    </head>
    <body onload="loadHTML();" ></body>
</html>

The content of controller.js is:

function phoneCtrl($scope) {
    $scope.phones = [
    {
        "name": "Nexus S",
        "snippet": "Fast just got faster with Nexus S."
    },

    {
        "name": "Motorola XOOM™ with Wi-Fi",
        "snippet": "The Next, Next Generation tablet."
    },

    {
        "name": "MOTOROLA XOOM™",
        "snippet": "The Next, Next Generation tablet."
    }
    ];
}
1
  • I believe document.write() actually wipes the whole page, not only the body, so the AngularJS scripts as well. So even if they would process HTML added later on, it wouldn't have a chance to. Commented Oct 23, 2013 at 15:36

1 Answer 1

3

The onload code is executed after AngularJS actually parses the DOM. So to catch them into Angular you have to use $compile. Look in the docs about how $compile works.

Sign up to request clarification or add additional context in comments.

1 Comment

stackoverflow.com/questions/11699635/… is a good reference on SO.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.