0

我会在我的部分文件中动态加载控制器,以便更好地组织我的代码。通过我的研究,我发现如果我想使用脚本标签从部分加载控制器,我需要包含 JQuery。

但是,这些方法似乎只有在我的控制器在全局范围内声明时才有效,即

function MainCtrl($scope) {}

如果我切换到在我的 controller.js 中使用模块

angular.module ("myApp").controller ("MainCtrl", function ($scope) {});

这不再适用于错误消息 “参数'MainCtrl'不是函数,未定义”

下面是一个证明这一点的plunker。

http://plnkr.co/wNv3UD

我怎样才能使这项工作?

注意 我没有故意在 index.html 中包含 controller.js。我想从 partial.html 加载控制器,因为它只会在那里使用。

编辑 阅读此问题后,我能够实现我想要的目标:AngularJS Dynamic loading a controller

这似乎是一种支持延迟加载的直接方法。希望 $controllerProvider.register 方法可以在未来的版本中通过 angular.module.controller 公开,以支持延迟加载。

4

2 回答 2

2

您可能想看看[RequireJS][1] 它为您提供了一种在运行时加载.js文件的好方法。

对于动态控制器加载部分:您应该编写一个提供程序(一项服务),它公开一些方法来在 Angular 应用程序运行时注册您的控制器(查看$controllerProviderAngular 文档)

我建议你看看这篇文章,因为它提到了如何完全自定义你的应用程序,包括脚本加载和控制器注册等。

于 2013-08-25T07:33:02.697 回答
0

您可以使用自定义指令来实现这一点,并且在指令中您可以使用 jquery getscript 或 jQuery ajax 调用加载脚本,当您加载部分时,指令将触发

于 2013-08-25T07:08:17.183 回答