2015-10-26 78 views
1

在一个third party框架中,可以通过提供将由框架添加到窗口onload的javascript代码来修改html页面。从他们的内容可以写入AddIn div元素。在window.onload事件中初始化角度

我该如何将角度应用程序注入到这个div元素(HTML + js)中。

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.0-beta.4/angular.min.js"></script> 
    <script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script type="text/javascript"> 
     window.onload=function() { 
     //todo add js code here 
     } 
     </script> 
    </head> 
    <body> 
    <div id="AddIn"></div> 
    </body> 
</html> 

我可以添加HTML

$('#AddIn').append("<div ng-app='dropboxApp' ng-controller='dropboxController as dropbox'>{{dropbox.label}}</div>"); 

,但我不知道在哪里可以加我的角度初始化代码,并把事情的工作

angular.module('dropboxApp', []) 
       .controller('dropboxController', function() { 
        var dropbox = this; 
        dropbox.label = 'hello angular'; 
       }); 
+0

使用NG-应用= “dropboxapp” – asb

回答

2

你可以懒懒地初始化你的应用程序该页面,而不是在页面上使用ng-app指令。在你注入html之后,你可以使用angular.bootstrap方法初始化页面上的角度,这个方法基本上需要DOM &然后在数组里面需要模块名。

虽然这样做,您需要在角度参考后将所有角度组件文件添加到页面上。他们应该在页面上的应用程序bootstrap之前初始化。

window.onload=function() { 
    $('#AddIn').append("<div ng-controller='dropboxController as dropbox'>{{dropbox.label}}</div>"); 
    //add angular html first 
    //then run angular on the page using angular.bootstrap. 
    angular.bootstrap($('#AddIn'), ['demo']); 
} 

注意:前角加载jQuery来获得jQuery的编译,而不是GET jQLite编译DOM DOM。

-1

除了潘卡回答,您可以使用角$window

$window.onload = function(){}