angular-lazy.loader
v0.5.2
Published
Makes it possible to lazy load angular controllers, decorators and services etc. It works perfectly with ngRoute, ui.router and ui.bootstrap
Downloads
8
Readme
lazy.loader
Module for lazy loading in angular. Makes it possible to lazy load angular elements (controllers, decorators, services, filters etc).
The project is build with support for the following modules: ui.router, ngRoute and ui.bootstrap.
This loader is inspired by https://github.com/urish/angular-load.
Demo
http://jstroem.github.io/lazy.loader/demo
Installation
via npm:
npm install angular-lazy.loadervia bower:
bower install angular-lazy.loaderUsage
Before you can use any of the lazy-loading methods listed below you need to initialize lazy.loader to the angular module you want to be able to add elements to lazily.
angular.module('moduleName', [..., 'lazy.loader']);
angular.module('lazy.loader').lazy.init('moduleName');NOTE: You need to call the lazy.init before any other methods are used on the module.
The .lazy.init method returns the moduleName module itself so you can chain your element registrations afterwards:
angular.module('moduleName', [..., 'lazy.loader']);
angular.module('lazy.loader').lazy.init('moduleName')
.controller('controlelrName', function() {
...
})
.config(function() {
...
});Using with ngRoute
When you define your routes you can now add controllerUrl which will be loaded before the route is loaded:
$routeProvider.when('/', {
templateUrl: 'test.html',
controllerUrl: 'controllers/Test.js',
controller: 'Test',
controllerAs: 'vm'
});Using with ui.router
When you define your states you can now add controllerUrl which will be loaded before the state is loaded:
$stateProvider.state('test', {
url: '/test',
templateUrl: 'test.html',
controllerUrl: 'controllers/Test.js',
controller: 'Test',
controllerAs: 'vm'
});This also works with multiple views:
$stateProvider.state('test', {
url: '/test',
views: {
header: {
templateUrl: 'header.html',
controllerUrl: 'controllers/header.js',
controller: 'Header',
controllerAs: 'vm'
},
footer: {
templateUrl: 'footer.html',
controllerUrl: 'controllers/footer.js',
controller: 'footer',
controllerAs: 'vm'
},
}
});Using with ui.bootstrap
When you define your modal options you can now add controllerUrl which will be loaded before the modal is loaded:
$uibModal.modal({
templateUrl: 'testModal.html',
controllerUrl: 'controllers/TestModal.js',
controller: 'TestModal',
controllerAs: 'vm'
});Using the lazyLoaderService:
You can also load your own custom javascript files by using the lazyLoaderService.load method. The method returns a promise which tells if the file was loaded correctly.
['$lazyLoaderService', function(lazyLoader) {
lazyLoader.load('https://some.url/javascript.js').then(function(){
console.log("success");
}, function(){
console.log("error");
});
}]Running the tests
npm testContributing
Contributions are welcome!
