Динамическая загрузка модуля в 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, время: 01:49. |