从部分加载控制器

时间:2013-08-24 21:38:38

标签: angularjs

我想在我的部分文件中动态加载控制器,这样我的代码组织得更好。通过我的research,我发现如果我想使用script标签从partial加载控制器,我需要包含JQuery。

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

function MainCtrl($scope) {}

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

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

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

以下是一名证明这一点的人。

http://plnkr.co/wNv3UD

我怎么能让这个工作?

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

修改 阅读完这个问题后,我能够实现我想要的目标:AngularJS Dynamic loading a controller

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

2 个答案:

答案 0 :(得分:2)

您可能需要查看[RequireJS][1] 它为您在运行中加载.js文件提供了一种简单易用的方法。

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

我建议您查看this post,因为它提到了如何完全自定义有关脚本加载和控制器注册的应用程序以及类似的内容。

答案 1 :(得分:0)

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