Динамическая загрузка модуля в Angular
Как динамически загрузить модуль в Angular через $http, чтобы потом пользоваться его контроллерами и сервисами?
Загрузка модуля осложнений не вызывает, но при таком коде :
angular.module('dlmod',[])
.controller('dlmodCtrl',function($scope,DLSvc){})
.factory('DLSvc',function(){return ServiceObject;})
app.requires.push('dlmod');
при компиляции Angular не находит контроллер dlmodCtrl, а при таком
angular.module('dlmod',[])
.factory('DLSvc',function(){return ServiceObject;});
app.requires.push('dlmod');
function dlmodCtrl('dlmodCtrl',function($scope,DLSvc){
});
не находит сервис (DLSvcProvider np found). При этом, если данный модуль подгрузить вместе со всем приложением, все работает. |
Нашел решение проблемы.
Все дело в том, что после вызова angular.bootstrap нельзя добавить компоненты штатными средствами angular. Помог такой код:
var app=angular.module('myApp',[]);
app.config(function($controllerProvider,$provide,$compileProvider){
angular._module = angular.module;
angular.module = function(name,req){
var m = angular._module(name,req);
m.controller = function(name,constructor){
$controllerProvider.register(name,constructor);
return this;
};
m.service = function(name,constructor){
$provide.service(name,constructor);
return this;
};
m.factory = function(name,constuctor){
$provide.factory(name,constuctor);
return this;
};
m.value=function(name,value){
$provide.value(name,value);
return this;
};
m.directive=function(name,factory){
$compileProvider.directive(name,factory);
return this;
};
return m;
};
});
После этого можно подгружать компоненты angular динамически. |
| Часовой пояс GMT +3, время: 07:24. |