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

时间:2013-03-01 10:27:13

标签: routing angularjs requirejs

我正在尝试组合使用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();
            })
        }})
    }]);
});

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

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您可以找到解决方案 here

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