Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Routing 使用AngularJS路由并使用requirejs按需加载控制器_Routing_Angularjs_Requirejs - Fatal编程技术网

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

Routing 使用AngularJS路由并使用requirejs按需加载控制器,routing,angularjs,requirejs,Routing,Angularjs,Requirejs,我正在尝试结合使用AngularJS和RequireJS。我希望使用$routeProvider服务,避免在应用程序启动时为我的视图加载所有控制器。为此,我尝试了以下方法: define(['require', 'angular', 'appModule'], function (require, angular, app) { app.config(['$routeProvider', function($routeProvider) { $routeProvider

我正在尝试结合使用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文件)完成


有什么想法吗?

你可以找到解决方案


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

唯一的方法是获得$controllerProvider。我这里有一个有效的解决方案:@matys84pl,这实际上是我想做的事情。谢谢分享。不过有一件事,我浏览了代码,发现您正在使用Require文本插件加载模板,这是使用库加载模板的唯一受支持的方法吗?如果我想从服务器上的URL加载模板,该怎么办?这取决于URL是否与你的应用程序相关。。换句话说,它是在同一个域上吗?如果不是这样,我想你必须使用某种代理来实现这一点(从其他域加载文件)。这真的很有帮助。只是想知道为什么你的回复没有被标记为应答(Kassem)?@matys84pl我们可以用它来加载服务吗?谢谢你的帖子。帮了我很多忙!