2013-08-24 84 views
0

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

然而,这些方法似乎只有工作,如果我的控制器在全球范围内声明的,即

function MainCtrl($scope) {} 

如果我切换到我的controller.js

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

该模块使用不与错误消息更长时间的工作 “参数'MainCtrl'不是一个函数,没有定义”

下面是一个演示这件事的蹲伏者。

http://plnkr.co/wNv3UD

如何才能使这项工作?

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

编辑 我才得以实现读书这个问题后我想给:AngularJS Dynamic loading a controller

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

+0

你忘了在''中包含你的'',并且你声明'var app'是你的模块,所以'app.controller()'不包含它在部分如果你想更好的用法看看加载器,如requirejs –

+0

我包括来自partial.html,这是我的问题点的脚本。我知道这是行之有效的,如果将脚本标记移动到index.html – ltfishie

+0

再次,我不会建议你应该使用像requirejs这样的脚本加载器,如果你想组织你的依赖或文件 –

回答

2

你可能想看看[RequireJS][1] 提供这是一种简单易用的方法,可以在运行中加载.js文件。

的动态控制装载部分:你应该写一个提供商(服务),它暴露了一些方法来注册你的控制器诡计角应用程序正在运行(取角文档看看$controllerProvider

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

0

你可以做到这一点使用自定义指令和指令,你可以使用jQuery getScript加入或jQuery的Ajax调用加载脚本,当您加载指令将触发部分