【问题标题】:How to load AngularJS controller file on content loaded如何在加载的内容上加载 AngularJS 控制器文件
【发布时间】:2015-03-13 19:08:11
【问题描述】:

我是Angular.JS 的新手,当从ng-include 加载的内容请求它时,我正在尝试动态加载控制器文件,我这样做是因为我正在构建的页面将有多个控制器和由于它的大小,我宁愿让初始页面快速加载,我不确定这样做,我想我可以通过这样做来实现它:

<script type="text/javascript" src="js/controllers/controllerFile.js"></script>

里面加载的内容。

控制器文件是这样的

app.controller('parseQuery', function()
{
    this.object = 'Enter query and parse.';

    this.parse = function()
    {
        this.object = JSON.stringify(window.getParam(this.query), null, '\t');
    };

    this.getURL = function()
    {
        this.query = document.URL;
        this.parse();
    };
});

html 文件使用ng-controller 调用控制器,因为它应该可以工作。但是加载内容时,javascript返回错误Argument 'parseQuery' is not a,所以没有任何效果,如何在应用程序启动后加载控制器文件?

【问题讨论】:

  • Angular 在引导后不能延迟加载控制器(或服务,或其他任何有角度的东西)。无论如何开箱即用。你可以看看github.com/ocombe/ocLazyLoad 或者等待支持延迟加载的Angular 2。
  • @jlowcs 所以我别无选择,只能在初始页面中加载所有控制器?
  • 我很确定你的总代码大小比 angular.js 本身要小得多,必须确定加载 - 那有什么意义呢?
  • @nosthertus 是的。虽然,特别是如果缩小和压缩,你的代码不应该很重。大型应用程序通常需要延迟加载。

标签: javascript angularjs


【解决方案1】:

要延迟加载脚本,您需要查看 AMD 或 CommonJS 加载程序。这些库提供了按需加载脚本的能力。

Dan Wahlin 有一个 excellent blog post 详细说明如何将 RequireJS 与 angular 一起使用。

在1.3.14 AngularJS recieved support for CommonJS。那将是你最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2019-08-13
    相关资源
    最近更新 更多