您可以使用 RequireJS 来执行此操作。就像是:
$routeProvider.when('/:plugin',{
templateUrl: 'plugins/' + plugin + '/index.html',
controller: plugin + 'Ctrl',
resolve: {myCtrl: function($q){
var deferred = $q.defer();
require('myCtrlFile',function(){
deferred.resolve();
});
return deferred.promise;
}}
});
您还需要动态注册控制器。通过在应用程序配置中公开您的提供程序。
app.config(function($controllerProvider,$compileProvider,$filterProvider,$provide){
app.register =
{
controller: $controllerProvider.register,
directive: $compileProvider.directive,
filter: $filterProvider.register,
factory: $provide.factory,
service: $provide.service
};
});
您的控制器文件可能如下所示:
define(['app'],function(app){
app.register.controller('myCtrl',MyCtrlFunction);
});
这只是一般的想法。我使用与此处描述的实现类似的实现
我也使用 ui-router。我不确定 ngRoute 的行为是否相同。