FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
angular.js/src/loader.js at master · fourmisz/angular.js · GitHub
fourmisz
/
angular.js
Public
forked from
angular/angular.js
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
angular.js
/
src
/
loader.js
Copy path
More file actions
More file actions
Latest commit
History
History
History
308 lines (277 loc) · 11 KB
Breadcrumbs
angular.js
/
src
/
loader.js
Copy path
File metadata and controls
308 lines (277 loc) · 11 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
'use strict'
;
/**
*
@ngdoc
interface
*
@name
angular.Module
*
@description
*
* Interface for configuring angular {
@link
angular.module modules}.
*/
function
setupModuleLoader
(
window
)
{
var
$injectorMinErr
=
minErr
(
'$injector'
)
;
var
ngMinErr
=
minErr
(
'ng'
)
;
function
ensure
(
obj
,
name
,
factory
)
{
return
obj
[
name
]
||
(
obj
[
name
]
=
factory
(
)
)
;
}
var
angular
=
ensure
(
window
,
'angular'
,
Object
)
;
// We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
angular
.
$$minErr
=
angular
.
$$minErr
||
minErr
;
return
ensure
(
angular
,
'module'
,
function
(
)
{
/**
@type
{
Object.<string, angular.Module>
} */
var
modules
=
{
}
;
/**
*
@ngdoc
function
*
@name
angular.module
*
@description
*
* The `angular.module` is a global place for creating, registering and retrieving Angular
* modules.
* All modules (angular core or 3rd party) that should be available to an application must be
* registered using this mechanism.
*
* When passed two or more arguments, a new module is created. If passed only one argument, an
* existing module (the name passed as the first argument to `module`) is retrieved.
*
*
* # Module
*
* A module is a collection of services, directives, filters, and configuration information.
* `angular.module` is used to configure the {
@link
AUTO.$injector $injector}.
*
* <pre>
* // Create a new module
* var myModule = angular.module('myModule', []);
*
* // register a new service
* myModule.value('appName', 'MyCoolApp');
*
* // configure existing services inside initialization blocks.
* myModule.config(function($locationProvider) {
* // Configure existing providers
* $locationProvider.hashPrefix('!');
* });
* </pre>
*
* Then you can create an injector and load your modules like this:
*
* <pre>
* var injector = angular.injector(['ng', 'MyModule'])
* </pre>
*
* However it's more likely that you'll just use
* {
@link
ng.directive:ngApp ngApp} or
* {
@link
angular.bootstrap} to simplify this process for you.
*
*
@param
{
!string
} name The name of the module to create or retrieve.
*
@param
{
Array.<string>=
} requires If specified then new module is being created. If
* unspecified then the the module is being retrieved for further configuration.
*
@param
{
Function
} configFn Optional configuration function for the module. Same as
* {
@link
angular.Module#methods_config Module#config()}.
*
@returns
{
module
} new module with the {
@link
angular.Module} api.
*/
return
function
module
(
name
,
requires
,
configFn
)
{
var
assertNotHasOwnProperty
=
function
(
name
,
context
)
{
if
(
name
===
'hasOwnProperty'
)
{
throw
ngMinErr
(
'badname'
,
'hasOwnProperty is not a valid {0} name'
,
context
)
;
}
}
;
assertNotHasOwnProperty
(
name
,
'module'
)
;
if
(
requires
&&
modules
.
hasOwnProperty
(
name
)
)
{
modules
[
name
]
=
null
;
}
return
ensure
(
modules
,
name
,
function
(
)
{
if
(
!
requires
)
{
throw
$injectorMinErr
(
'nomod'
,
"Module '{0}' is not available! You either misspelled "
+
"the module name or forgot to load it. If registering a module ensure that you "
+
"specify the dependencies as the second argument."
,
name
)
;
}
/**
@type
{
!Array.<Array.<*>>
} */
var
invokeQueue
=
[
]
;
/**
@type
{
!Array.<Function>
} */
var
runBlocks
=
[
]
;
var
config
=
invokeLater
(
'$injector'
,
'invoke'
)
;
/**
@type
{
angular.Module
} */
var
moduleInstance
=
{
// Private state
_invokeQueue
:
invokeQueue
,
_runBlocks
:
runBlocks
,
/**
*
@ngdoc
property
*
@name
angular.Module#requires
*
@propertyOf
angular.Module
*
@returns
{
Array.<string>
} List of module names which must be loaded before this module.
*
@description
* Holds the list of modules which the injector will load before the current module is
* loaded.
*/
requires
:
requires
,
/**
*
@ngdoc
property
*
@name
angular.Module#name
*
@propertyOf
angular.Module
*
@returns
{
string
} Name of the module.
*
@description
*/
name
:
name
,
/**
*
@ngdoc
method
*
@name
angular.Module#provider
*
@methodOf
angular.Module
*
@param
{
string
} name service name
*
@param
{
Function
} providerType Construction function for creating new instance of the
* service.
*
@description
* See {
@link
AUTO.$provide#provider $provide.provider()}.
*/
provider
:
invokeLater
(
'$provide'
,
'provider'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#factory
*
@methodOf
angular.Module
*
@param
{
string
} name service name
*
@param
{
Function
} providerFunction Function for creating new instance of the service.
*
@description
* See {
@link
AUTO.$provide#factory $provide.factory()}.
*/
factory
:
invokeLater
(
'$provide'
,
'factory'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#service
*
@methodOf
angular.Module
*
@param
{
string
} name service name
*
@param
{
Function
} constructor A constructor function that will be instantiated.
*
@description
* See {
@link
AUTO.$provide#service $provide.service()}.
*/
service
:
invokeLater
(
'$provide'
,
'service'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#value
*
@methodOf
angular.Module
*
@param
{
string
} name service name
*
@param
{
*
} object Service instance object.
*
@description
* See {
@link
AUTO.$provide#value $provide.value()}.
*/
value
:
invokeLater
(
'$provide'
,
'value'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#constant
*
@methodOf
angular.Module
*
@param
{
string
} name constant name
*
@param
{
*
} object Constant value.
*
@description
* Because the constant are fixed, they get applied before other provide methods.
* See {
@link
AUTO.$provide#constant $provide.constant()}.
*/
constant
:
invokeLater
(
'$provide'
,
'constant'
,
'unshift'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#animation
*
@methodOf
angular.Module
*
@param
{
string
} name animation name
*
@param
{
Function
} animationFactory Factory function for creating new instance of an
* animation.
*
@description
*
* **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
*
*
* Defines an animation hook that can be later used with
* {
@link
ngAnimate.$animate $animate} service and directives that use this service.
*
* <pre>
* module.animation('.animation-name', function($inject1, $inject2) {
* return {
* eventName : function(element, done) {
* //code to run the animation
* //once complete, then run done()
* return function cancellationFunction(element) {
* //code to cancel the animation
* }
* }
* }
* })
* </pre>
*
* See {
@link
ngAnimate.$animateProvider#register $animateProvider.register()} and
* {
@link
ngAnimate ngAnimate module} for more information.
*/
animation
:
invokeLater
(
'$animateProvider'
,
'register'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#filter
*
@methodOf
angular.Module
*
@param
{
string
} name Filter name.
*
@param
{
Function
} filterFactory Factory function for creating new instance of filter.
*
@description
* See {
@link
ng.$filterProvider#register $filterProvider.register()}.
*/
filter
:
invokeLater
(
'$filterProvider'
,
'register'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#controller
*
@methodOf
angular.Module
*
@param
{
string|Object
} name Controller name, or an object map of controllers where the
* keys are the names and the values are the constructors.
*
@param
{
Function
} constructor Controller constructor function.
*
@description
* See {
@link
ng.$controllerProvider#register $controllerProvider.register()}.
*/
controller
:
invokeLater
(
'$controllerProvider'
,
'register'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#directive
*
@methodOf
angular.Module
*
@param
{
string|Object
} name Directive name, or an object map of directives where the
* keys are the names and the values are the factories.
*
@param
{
Function
} directiveFactory Factory function for creating new instance of
* directives.
*
@description
* See {
@link
ng.$compileProvider#methods_directive $compileProvider.directive()}.
*/
directive
:
invokeLater
(
'$compileProvider'
,
'directive'
)
,
/**
*
@ngdoc
method
*
@name
angular.Module#config
*
@methodOf
angular.Module
*
@param
{
Function
} configFn Execute this function on module load. Useful for service
* configuration.
*
@description
* Use this method to register work which needs to be performed on module loading.
*/
config
:
config
,
/**
*
@ngdoc
method
*
@name
angular.Module#run
*
@methodOf
angular.Module
*
@param
{
Function
} initializationFn Execute this function after injector creation.
* Useful for application initialization.
*
@description
* Use this method to register work which should be performed when the injector is done
* loading all modules.
*/
run
:
function
(
block
)
{
runBlocks
.
push
(
block
)
;
return
this
;
}
}
;
if
(
configFn
)
{
config
(
configFn
)
;
}
return
moduleInstance
;
/**
*
@param
{
string
} provider
*
@param
{
string
} method
*
@param
{
String=
} insertMethod
*
@returns
{
angular.Module
}
*/
function
invokeLater
(
provider
,
method
,
insertMethod
)
{
return
function
(
)
{
invokeQueue
[
insertMethod
||
'push'
]
(
[
provider
,
method
,
arguments
]
)
;
return
moduleInstance
;
}
;
}
}
)
;
}
;
}
)
;
}
Back
|
FazBrowse Home
|
New Git URL