我有一个 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/