13

我正在尝试结合使用 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 文件正在正确加载,但我在渲染视图中看不到数据绑定值。我想知道是否可以controller以其他方式分配值,以等待异步调用(加载 JS 文件)完成。

有任何想法吗?

4

1 回答 1

5

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

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

于 2014-01-29T11:46:03.090 回答