在我的MVC项目中,我使用angularjs来生成单页面应用程序。服务器生成的每个视图都按角度加载到ng-view
,也许它们内部有一些ng-controller
。所以在它们可以加载之前我已经处理并延迟了视图分辨率,然后在运行时动态注册一些控制器。打击代码描述了这种情况
在我的页面顶部我有这个:
app.config(function ($controllerProvider) {
// i hold app.controllerProvider to call later.
app.controllerProvider = $controllerProvider;
}
和
var routes={'URL1' , 'URL2' , 'URL3' , ... }
app.config(function ($routeProvider) {
routes.forEach(function (route) {
$routeProvider.when(route, {
templateUrl: route
,
resolve: {
deps: PageResolver
}
});
});
}
和解析器:
function PageResolver($q, $rootScope) {
var deferred = $q.defer();
app.controllerProvider.register('MyCTRL', [
'$scope',
function ($scope) {
// ... some codes
}]);
deferred.resolve();
return deferred.promise;
}
这些代码运行良好,但我的问题是app.controllerProvider.register
不会一直影响!这意味着我无法动态注册控制器?!或者出了什么问题?