2014-02-10 23 views
1

我希望能够在运行时创建AngularJS模块,所以我这样做:如何在运行时在AngularJS中创建模块?

<section class="panel portlet-item" id="crashpanel"></section> 
<script type="text/javascript"> 
var angularApp = angular.module("Crashpanel", []); 
angularApp.controller("CrashpanelCtrl", function ($scope, $http, $compile) 
{ 
    console.log("Hello"); 
}); 
angular.bootstrap(angular.element("#crashpanel"), [ "Crashpanel" ]); 
</script> 

但“你好”不显示,因为控制器没有连接到的元素。如何能够将控制器连接到元件上?

+0

您想在运行时将您的控制器附加到您的部分?你真的需要这个吗? –

+0

@Rodrigo是的,否则我得到以下错误:http://docs.angularjs.org/error/ng:areq?p0=CrashpanelCtrl&p1=not%20a%20function,%20got%20undefined –

+0

put ng-app =“Crashpanel “ –

回答

1

你需要把数据-NG-应用=“Crashpanel”地方在你的代码,使您的模块的引用,如果你想要的,例如:

<html data-ng-app="Crashpanel"> 

你的部分必须有一个NG控制器属性(如另一个用户说的)对您的控制器的参考。

<section class="panel portlet-item" id="crashpanel" data-ng-controller="CrashpanelCtrl"></section> 
+0

谢谢!它的工作原理,但我不明白为什么...在html标签上使用ng-app并将它放在section标签上有什么区别? –

+0

这个指令自动引导你的应用程序,我认为(我不确定)在编译阶段的angularjs找到这个指令后,它只会查找这个html元素下面的任何其他指令(子元素),而不是元素本身。 –

0

你的元素改成这样:

<section class="panel portlet-item" id="crashpanel" data-ng-controller="CrashpanelCtrl"></section> 
+0

我得到这个错误http://docs.angularjs.org/error/ng:areq?p0=CrashpanelCtrl&p1=not%20a%20function,%20got%20undefined –