javascript - 为每个 View 加载一个 Controller AngularJS

标签 javascript angularjs spring jsp

我有一个 Spring + AngularJS Web 应用程序,具有以下 Angular 文件结构。 mainmodule.js - 所有配置和路由都在其中 Controller 1.js Controller 2.js

我的主页是 home.jsp,我在其中导入了所有这些文件。随着项目变得越来越大,我想我们总共只有 50 个以上的文件。因此,我不想将它们转储到 home.jsp 中,而是想将它们加载到相应的 View 文件中。但是当我尝试在相应的 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。

最佳答案

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

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

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

RequireJS官网:http://requirejs.org

关于javascript - 为每个 View 加载一个 Controller AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605435/

相关文章:

JavaScript:setAttribute 有效但 .style 无效

html5 - 搜索引擎如何处理AngularJS应用程序?

angularjs - 在 angularjs 版本 1.3.0 中使用 ng-controller 时出现错误

javascript - AngularJS 模块分离无法正常工作

java - org.eclipse.jetty.websocket.jsr356.server.ServerContainer 无法转换为 org.apache.tom cat.websocket.server.WsServerContaine

javascript - 分形树递归问题

javascript - Richfaces 4.x 日历组件 ondateselected 事件

javascript - Firefox 3.6 中 ajax 调用 PHP 时出现的问题

java - 保存对象的 toString 值时出现 Stackoverflow 错误 - Java/Hibernate/Spring

java - 为什么 Spring 登录表单不会显示登录失败的任何错误信息?