-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathroute-config.js
executable file
·123 lines (106 loc) · 4.64 KB
/
route-config.js
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
/**
* Created with IntelliJ IDEA.
* User: Mateusz
* Date: 22.11.12
* Time: 22:38
*/
define(['utils/lazy-directives', 'utils/lazy-services', 'utils/lazy-filters'], function (lazyDirectives, lazyServices, lazyFilters) {
var $controllerProvider,
$compileProvider,
$provide,
$filterProvider;
function setControllerProvider(value) {
$controllerProvider = value;
}
function setCompileProvider(value) {
$compileProvider = value;
lazyDirectives.setCompileProvider(value);
}
function setProvide(value) {
$provide = value;
lazyServices.setProvide(value);
}
function setFilterProvider(value) {
$filterProvider = value;
lazyFilters.setFilterProvider(value);
}
// Use this as a guide to extend... current "services" is only value provide
// Services should use factory
//$provide.value('a', 123);
//$provide.factory('a', function() { return 123; });
//$compileProvider.directive('directiveName', ...);
//$filterProvider.register('filterName', ...);
function config(templateUrl, controllerName, controllers, lazyResources) {
if (!$controllerProvider) {
throw new Error("$controllerProvider is not set!");
}
var defer,
html,
routeDefinition = {};
routeDefinition.template = function () {
return html;
};
routeDefinition.controller = controllerName;
routeDefinition.resolve = {
delay: function ($q, $rootScope) {
defer = $q.defer();
if (!html) {
var dependencies = ["text!" + templateUrl, controllerName];
if (controllers) {
dependencies = dependencies.concat(controllers);
}
if (lazyResources) {
dependencies = dependencies.concat(lazyResources.directives);
dependencies = dependencies.concat(lazyResources.services);
dependencies = dependencies.concat(lazyResources.filters);
}
require(dependencies, function () {
// TODO fix this mess
var template = arguments[0];
$controllerProvider.register(controllerName, arguments[1]);
var baseNumber = 2 + (controllers == null ? 0 : controllers.length);
var directiveNumber = (lazyResources.directives == null ? 0 : lazyResources.directives.length);
var serviceNumber = (lazyResources.services == null ? 0 : lazyResources.services.length);
var filterNumber = (lazyResources.filters == null ? 0 : lazyResources.filters.length);
if (controllers) {
for (var i = 2; i < baseNumber; i++) {
$controllerProvider.register(arguments[i][0], arguments[i][1]);
}
}
if (lazyResources.directives) {
for (var i = (baseNumber); i < baseNumber + directiveNumber; i++) {
lazyDirectives.register(arguments[i]);
}
}
if (lazyResources.services) {
for (var i = (baseNumber) + directiveNumber; i < baseNumber + directiveNumber + serviceNumber; i++) {
lazyServices.register(arguments[i]);
}
}
if (lazyResources.filters) {
for (var i = (baseNumber) + directiveNumber + serviceNumber; i < baseNumber + directiveNumber + serviceNumber + filterNumber; i++) {
lazyFilters.register(arguments[i]);
}
}
html = template;
defer.resolve();
$rootScope.$apply()
}
)
}
else {
defer.resolve();
}
return defer.promise;
}
}
return routeDefinition;
}
return {
setControllerProvider: setControllerProvider,
setCompileProvider: setCompileProvider,
setProvide: setProvide,
setFilterProvider: setFilterProvider,
config: config
}
})