Routing 使用AngularJS路由并使用requirejs按需加载控制器
我正在尝试结合使用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
$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我们可以用它来加载服务吗?谢谢你的帖子。帮了我很多忙!