根据AngularJS模板选择性加载javascript

时间:2015-04-23 14:35:25

标签: javascript angularjs ngroute ng-view

我在单页网页应用中工作,需要用户/密码保护。 将根据用户配置文件加载模块,以基于滚动的方式限制访问。

我使用ng-view加载与用户ID相对应的模板。

如何有选择地加载模板控制器的相应JavaScript文件?

<script script src="restrictetd/path/MyAngularControl.js"></script>

如果用户无权访问该特定模板,则无需下载JavaScript文件。

我真的很感激任何建议。

1 个答案:

答案 0 :(得分:0)

您可能会过度复杂化您的应用。除非您的应用程序非常庞大,否则如果您只是将所有需要的JavaScript提供给客户端,则更容易维护。不显示用户不应该执行的操作是客户端的工作,但实际执行该操作是服务器工作。

然而,做你想做的事情是可能的。在路线中要做的第一件事就是下载JavaScript文件和模板但是路由最初没有返回任何内容或某些加载指示符。加载JS文件后,向HEAD添加脚本标记或处理JS文件以加载它。然后加载模板并编译它。

这个过程的一个警告是没有新的模块可以使用。我建议将任何be控制器/指令添加到用于ng-app的模块中。在已经初始化的Angular应用程序中,可以通过这种方式定义新事物,但是不能重新定义任何内容。因此,如果控制器xyz已经存在,并且您加载另一个控制器xyz,则第二次加载将不会执行任何操作。