【问题标题】:Loading One Controller Per View AngularJS每个视图加载一个控制器AngularJS
【发布时间】:2016-01-05 06:25:10
【问题描述】:

我有一个具有以下角度文件结构的 Spring + AngularJS Web 应用程序。 mainmodule.js - 所有配置和路由的位置 控制器1.js 控制器2.js

我的主页是 home.jsp,我在其中导入了所有这些文件。随着项目越来越大,我想我们总共只有 50 多个文件。因此,我不想将它们转储到 home.jsp 中,而是将它们加载到相应的视图文件中。但是当我尝试在相应的 JSP 文件中加载 controller1.js 时,出现以下错误。

[ng:areq] http://errors.angularjs.org/1.4.4/ng/areq?p0=dashboardController&p1=not%20aNaNunction%2C%20got%20undefined

有人可以帮我找出问题所在,我该如何解决?

顺便说一句,我使用的是 ui-router 而不是默认的 ngRoute。

【问题讨论】:

    标签: javascript angularjs spring jsp


    【解决方案1】:

    处理这种情况的一种方法是在每个路由上定义一个解析属性,并为其分配一个返回承诺的函数。该函数可以处理动态加载包含目标控制器的脚本并在加载完成后解析承诺。例如:

    $routeProvider
    .when('/customers',
        {
            templateUrl: '/app/views/customers.html',
            resolve: resolveController('/app/controllers/customersController.js')
        });
    

    但您的问题的最佳解决方案是使用 RequireJS 框架和 AngularJS 来动态加载每个视图的控制器。 有一个非常有趣的来源对此进行了解释:http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs

    RequireJS官网:http://requirejs.org

    【讨论】:

    • 我想使用您在此处发布的代码,但在 ui-router 中找不到 resolveController 方法。那么您可以发布任何相关的网站链接吗?
    猜你喜欢
    • 2017-06-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2017-09-17
    • 2015-01-15
    • 2014-07-16
    • 2020-02-01
    相关资源
    最近更新 更多