Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2bd71ef

Browse files
committed
1.2.1 released
1 parent 2648470 commit 2bd71ef

File tree

7 files changed

+252
-10
lines changed

7 files changed

+252
-10
lines changed

‎README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ require.config({
6161
paths: {
6262
'angular': 'assets/angular/angular.min',
6363
'angular-ui-router': 'assets/angular-ui-router/release/angular-ui-router.min',
64-
'angular-async-loader': 'assets/angular-async-loader/angular-async-loader'
64+
'angular-async-loader': 'assets/angular-async-loader/dist/angular-async-loader.min'
6565
},
6666
shim: {
6767
'angular': {exports: 'angular'},

‎angular-async-loader.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
function factory(angular, undefined) {
1111

12-
var VERSION = '1.2.0';
12+
var VERSION = '1.2.1';
1313

1414
// Support require.js, sea.js, system.js
1515
var amdRequire = (function() {
@@ -34,15 +34,14 @@
3434
* @param {String|Array} dependencies
3535
* @returns {*} a promised function to ajax load dependencies
3636
*/
37-
function requireLoadFn(dependencies) {
37+
function resolveDependencies(dependencies) {
3838
if (typeof(dependencies) === 'string') {
3939
dependencies = [dependencies];
4040
}
41-
return ['$q', '$rootScope',function($q,$rootScope) {
41+
return ['$q', function($q) {
4242
var defer = $q.defer();
4343
amdRequire(dependencies, function() {
44-
defer.resolve(Array.prototype.slice.call(arguments));
45-
$rootScope.$apply();
44+
defer.resolve(arguments);
4645
});
4746
return defer.promise;
4847
}];
@@ -74,7 +73,7 @@
7473
delete config.controllerUrl;
7574

7675
var resolve = config.resolve || {};
77-
resolve['$dummy'] = requireLoadFn(dependencies);
76+
resolve['$dummy'] = resolveDependencies(dependencies);
7877
config.resolve = resolve;
7978
}
8079
}

‎dist/angular-async-loader.js

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
/**
2+
* async loader for angular 1.x.
3+
*
4+
* https://github.com/subchen/angular-async-loader
5+
*
6+
* subchen@gmail.com
7+
*/
8+
(function() {
9+
10+
function factory(angular, undefined) {
11+
12+
var VERSION = '1.2.1';
13+
14+
// Support require.js, sea.js, system.js
15+
var amdRequire = (function() {
16+
if (typeof(require) === 'function') {
17+
if (typeof(require.async) === 'function') {
18+
return require.async;
19+
} else {
20+
return require;
21+
}
22+
} else if (typeof(seajs) === 'object' && typeof(seajs.use) === 'function') {
23+
return seajs.use;
24+
} else if (typeof(System) === 'object' && typeof(System.amdRequire) === 'function') {
25+
return System.amdRequire;
26+
}
27+
throw new Error('No amd/cmd module loader found.');
28+
}());
29+
30+
/**
31+
* Load external dependencies, such as Controller, Service, etc.
32+
*
33+
* @private
34+
* @param {String|Array} dependencies
35+
* @returns {*} a promised function to ajax load dependencies
36+
*/
37+
function resolveDependencies(dependencies) {
38+
if (typeof(dependencies) === 'string') {
39+
dependencies = [dependencies];
40+
}
41+
return ['$q', function($q) {
42+
var defer = $q.defer();
43+
amdRequire(dependencies, function() {
44+
defer.resolve(arguments);
45+
});
46+
return defer.promise;
47+
}];
48+
}
49+
50+
/**
51+
* Rewrite route config for $routeProvider.when or $stateProvider.state.
52+
*
53+
* Transform 'controllerUrl' and 'dependencies' attrs into resolve object.
54+
*
55+
* @private
56+
* @param {Object} config
57+
* @returns {Object} the modified config
58+
*/
59+
function route(config) {
60+
61+
function rewriteConfig(config) {
62+
if (config.hasOwnProperty('controllerUrl') || config.hasOwnProperty('dependencies')) {
63+
var dependencies = config.dependencies;
64+
if (dependencies === undefined) {
65+
dependencies = [];
66+
} else if (typeof(dependencies) === 'string') {
67+
dependencies = [dependencies];
68+
}
69+
if (config.controllerUrl) {
70+
dependencies.push(config.controllerUrl);
71+
}
72+
delete config.dependencies;
73+
delete config.controllerUrl;
74+
75+
var resolve = config.resolve || {};
76+
resolve['$dummy'] = resolveDependencies(dependencies);
77+
config.resolve = resolve;
78+
}
79+
}
80+
81+
// multiple views support
82+
if (config.hasOwnProperty('views')) {
83+
Object.keys(config.views).forEach(function(view) {
84+
rewriteConfig(config.views[view]);
85+
});
86+
} else {
87+
rewriteConfig(config);
88+
}
89+
90+
return config;
91+
}
92+
93+
94+
return {
95+
/**
96+
* Version of npm package.
97+
*/
98+
VERSION: VERSION,
99+
100+
/**
101+
* Configure angular module instance to support async load components.
102+
*
103+
* @param {angular.Module} app
104+
*/
105+
configure: function(app) {
106+
107+
app.provider('$asyncLoader', [
108+
'$controllerProvider',
109+
'$compileProvider',
110+
'$provide',
111+
'$filterProvider',
112+
function($controllerProvider,
113+
$compileProvider,
114+
$provide,
115+
$filterProvider) {
116+
this.$get = function() {
117+
return {
118+
$controllerProvider: $controllerProvider,
119+
$compileProvider: $compileProvider,
120+
$provide: $provide,
121+
$filterProvider: $filterProvider
122+
};
123+
};
124+
}
125+
]);
126+
127+
app.run(['$asyncLoader', function($asyncLoader) {
128+
var $controllerProvider = $asyncLoader.$controllerProvider;
129+
var $compileProvider = $asyncLoader.$compileProvider;
130+
var $provide = $asyncLoader.$provide;
131+
var $filterProvider = $asyncLoader.$filterProvider;
132+
133+
app.value = function(name, value) {
134+
$provide.value(name, value);
135+
return app;
136+
};
137+
138+
app.constant = function(name, value) {
139+
$provide.constant(name, value);
140+
return app;
141+
};
142+
143+
app.factory = function(name, factory) {
144+
$provide.factory(name, factory);
145+
return app;
146+
};
147+
148+
app.service = function(name, service) {
149+
$provide.service(name, service);
150+
return app;
151+
};
152+
153+
app.filter = function(name, filter) {
154+
$filterProvider.register(name, filter);
155+
return app;
156+
};
157+
158+
app.directive = function(name, directive) {
159+
$compileProvider.directive(name, directive);
160+
return app;
161+
};
162+
163+
app.controller = function(name, controller) {
164+
$controllerProvider.register(name, controller);
165+
return app;
166+
};
167+
168+
app.decorator = function(name, decorator) {
169+
$provide.decorator(name, decorator);
170+
return app;
171+
};
172+
173+
app.provider = function(name, service) {
174+
$provide.provider(name, service);
175+
return app;
176+
};
177+
}]);
178+
179+
// rewrite $routeProvider.when
180+
if (app.requires && app.requires.indexOf('ngRoute') !== -1) {
181+
app.config(['$routeProvider', function($routeProvider) {
182+
var whenFn = $routeProvider.when;
183+
$routeProvider.when = function(path, config) {
184+
return whenFn.call($routeProvider, path, route(config));
185+
};
186+
}]);
187+
}
188+
// rewrite $stateProvider.state
189+
if (app.requires && app.requires.indexOf('ui.router') !== -1) {
190+
app.config(['$stateProvider', function($stateProvider) {
191+
var stateFn = $stateProvider.state;
192+
$stateProvider.state = function(state, config) {
193+
return stateFn.call($stateProvider, state, route(config));
194+
};
195+
}]);
196+
}
197+
198+
199+
var injector;
200+
201+
/**
202+
* Get angular injector object by name in module scope.
203+
*
204+
* @param {String} name
205+
* @returns {*} the injected object
206+
*/
207+
app.get = function(name) {
208+
if (injector === undefined) {
209+
var elements = [app.element, document, 'html', 'body'];
210+
for (var i = 0; i < elements.length; i++) {
211+
injector = angular.element(elements[i]).injector();
212+
if (injector !== undefined) {
213+
break;
214+
}
215+
}
216+
}
217+
return injector.get(name);
218+
};
219+
220+
}
221+
};
222+
}
223+
224+
/**
225+
* @exports
226+
*/
227+
if (typeof(define) === 'function' && define.amd) {
228+
define(['angular'], function(angular) {
229+
return factory(angular);
230+
});
231+
} else {
232+
window.asyncLoader = factory(window.angular);
233+
}
234+
235+
}());

‎dist/angular-async-loader.min.js

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dist/angular-async-loader.min.js.map

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-async-loader",
3-
"version": "1.2.0",
3+
"version": "1.2.1",
44
"description": "async loader for angular 1.x",
55
"author": {
66
"name": "Guoqiang Chen",
@@ -25,6 +25,11 @@
2525
"ui-router",
2626
"ngRoute"
2727
],
28-
"dependencies": {
28+
"dependencies": {},
29+
"devDependencies": {
30+
"uglifyjs": "^2.4.10"
31+
},
32+
"scripts": {
33+
"dist": "cd ./dist; cp ../angular-async-loader.js ./; uglifyjs angular-async-loader.js -c -m -o angular-async-loader.min.js --source-map angular-async-loader.min.js.map"
2934
}
3035
}

‎sample/webapp/bootstrap.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ require.config({
33
paths: {
44
'angular': 'assets/angular/angular.min',
55
'angular-ui-router': 'assets/angular-ui-router/release/angular-ui-router.min',
6-
'angular-async-loader': 'assets/angular-async-loader/angular-async-loader'
6+
'angular-async-loader': 'assets/angular-async-loader/dist/angular-async-loader.min'
77
},
88
shim: {
99
'angular': {exports: 'angular'},

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /