2014-10-08 63 views
0

我想在现有的非Angular webapp中使用Angular,将应用程序注入页面并绑定到特定的div。由于该应用可能需要将多个Angular应用绑定到不同的div(根据需要显示和隐藏它们),因此我似乎无法使用ngApp并且必须执行手动引导。但是,这需要做一些像下面这样丑陋的事情,在这里我必须定义一个boostrap函数,我从应用程序中调用我将Angular应用程序插入到的函数。有没有办法避免在这种情况下调用doBootstrap?我基本上喜欢注入并自动启动应用程序。这在初始加载时不会发生,所以document.ready样式解决方案不是一个选项。此外,避免在div上定义一个ng-controller会很好,但这是一个较小的问题。自动引导Angular应用程序注入到web应用程序

angular.module('TestApp', []) 
.controller('TestAppController', ['$scope', function ($scope) { 
    document.getElementById('myDiv').innerText = 'testing'; 
}]); 

var doBootstrap = function() { 
    angular.bootstrap(document.getElementById('myDiv'), ['TestApp']); 
}; 

回答

0

原来,我应该已经定义模块运行后手动启动代码(即删除功能包裹它)。

angular.module('TestApp', []) 
.controller('TestAppController', ['$scope', function ($scope) { 
    document.getElementById('myDiv').innerText = 'testing'; 
}]); 

angular.bootstrap(document.getElementById('myDiv'), ['TestApp']); 
0

如何:

angular.element(document).ready(function() { 
    angular.bootstrap(document, ['TestApp']); 
}); 

请参阅本文档也:https://docs.angularjs.org/guide/bootstrap

+0

感谢您的回复。 Angular应用程序需要加载以响应某些事件,所以document.ready并不是真正的选项,因为在注入Angular JS的时候文档已经加载。 – praetorian1 2014-10-08 20:27:25