使用requirejs按需使用AngularJS路由和加载控制器

Kas*_*sem 12 routing requirejs angularjs

我正在尝试组合使用AngularJS和RequireJS.我想使用该$routeProvider服务,避免在应用程序启动时为我的视图加载所有控制器.为此,我尝试了以下方法:

define(['require', 'angular', 'appModule'], function (require, angular, app) {
    app.config(['$routeProvider', function($routeProvider) {
      $routeProvider
          .when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
            require(['sitesController'], function(SitesController) {
                return new SitesController();
            })
        }})
    }]);
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我不起作用.没有错误.包含控制器的JS文件正在正确加载,但我无法在渲染视图中看到数据绑定值.我想知道是否可以controller以其他方式分配等待异步调用(加载JS文件)来完成的值.

有任何想法吗?

Alb*_*orz 5

你可以在这里找到解决方案

您需要在每个路由上定义resolve属性,并为其分配一个返回promise的函数.该函数可以动态加载包含目标控制器的脚本,并在加载完成后解析promise.在本文中,Dan Wahlin展示了如何使用约定优于配置来实现更实用的路由.