Skip to content

Commit 4cd49a0

Browse files
committed
Added filter example and should remove lazy resources when not called.
1 parent df6962e commit 4cd49a0

File tree

10 files changed

+119
-44
lines changed

10 files changed

+119
-44
lines changed

app/js/app.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88

99
define(['angular', 'utils/route-config'], function (angular, routeConfig) {
1010

11-
return angular.module('myApp', [], function ($provide, $compileProvider, $controllerProvider) {
11+
return angular.module('myApp', [], function ($provide, $compileProvider, $controllerProvider, $filterProvider) {
1212
routeConfig.setProvide($provide);
1313
routeConfig.setCompileProvider($compileProvider);
1414
routeConfig.setControllerProvider($controllerProvider);
15+
routeConfig.setFilterProvider($filterProvider);
1516
})
1617
});

app/js/controllers/first.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010
define([], function () {
1111

1212
function FirstController($scope, tester) {
13-
$scope.message = "I'm the 1st controller!" + tester;
14-
console.log(tester);
13+
$scope.message = "I'm the 1st controller! " + tester;
14+
$scope.greeting = "Hello world!";
15+
1516
}
1617

1718
return FirstController;

app/js/filters/reverse.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Created with JetBrains WebStorm.
3+
* User: avivcallander
4+
* Date: 3/31/13
5+
* Time: 4:40 PM
6+
* To change this template use File | Settings | File Templates.
7+
*/
8+
9+
10+
'use strict';
11+
12+
define([], function () {
13+
14+
return ['reverse', function() {
15+
return function(input, uppercase) {
16+
var out = "";
17+
for (var i = 0; i < input.length; i++) {
18+
out = input.charAt(i) + out;
19+
}
20+
// conditional based on optional argument
21+
if (uppercase) {
22+
out = out.toUpperCase();
23+
}
24+
return out;
25+
}}];
26+
})
27+
28+

app/js/routes.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
define(['app', 'utils/route-config'], function (app, routeConfig) {
1111

1212
return app.config(function ($routeProvider) {
13-
$routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester']}));
14-
$routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester']}));
13+
$routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester'], filters: ['filters/reverse']}));
14+
$routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester'], filters: []}));
1515
$routeProvider.when('/admin', routeConfig.config('../admin/partials/admin.html', 'controllers/second', ['controllers/third', '../admin/controllers/fourth']));
1616

1717
$routeProvider.otherwise({redirectTo:'/view1'});

app/js/services/tester.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99

1010
define([], function () {
1111

12-
return ['tester', 'tester123']
12+
return ['tester', 'test service via value return']
1313
})

app/js/utils/lazy-directives.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,19 @@ define([], function () {
1414
}
1515

1616
function register(directive) {
17-
if (!$compileProvider) {
18-
throw new Error("$compileProvider is not set!");
17+
if(directive){
18+
if (!$compileProvider) {
19+
throw new Error("$compileProvider is not set!");
20+
}
21+
$compileProvider.directive.apply(null, directive);
22+
}else{
23+
$compileProvider.directive.apply = null;
1924
}
20-
$compileProvider.directive.apply(null, directive);
25+
2126
}
2227

2328
return {
24-
setCompileProvider:setCompileProvider,
25-
register:register
29+
setCompileProvider: setCompileProvider,
30+
register: register
2631
}
2732
})

app/js/utils/lazy-filters.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
define([], function () {
2+
3+
var $filterProvider;
4+
5+
function setFilterProvider(value) {
6+
$filterProvider = value;
7+
}
8+
9+
function register(filter) {
10+
if(filter){
11+
if (!$filterProvider) {
12+
throw new Error("$setProvide is not set!");
13+
}
14+
$filterProvider.register(filter[0], filter[1]);
15+
}else{
16+
$filterProvider.register = null;
17+
}
18+
19+
}
20+
21+
return {
22+
setFilterProvider: setFilterProvider,
23+
register: register
24+
}
25+
})

app/js/utils/lazy-services.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ define([], function () {
33
var $provide;
44

55
function setProvide(value) {
6-
console.log(value);
76
$provide = value;
87
}
98

109
function register(service) {
11-
if (!$provide) {
12-
throw new Error("$setProvide is not set!");
10+
if (service) {
11+
if (!$provide) {
12+
throw new Error("$setProvide is not set!");
13+
}
14+
$provide.value(service[0], service[1]);
15+
} else {
16+
$provide.value = null;
1317
}
14-
$provide.value(service[0], service[1]);
18+
1519
}
1620

21+
1722
return {
18-
setProvide:setProvide,
19-
register:register
23+
setProvide: setProvide,
24+
register: register
2025
}
2126
})

app/js/utils/route-config.js

+35-27
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
* Time: 22:38
66
*/
77

8-
define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirectives, lazyServices) {
8+
define(['utils/lazy-directives', 'utils/lazy-services', 'utils/lazy-filters'], function (lazyDirectives, lazyServices, lazyFilters) {
99

1010
var $controllerProvider,
1111
$compileProvider,
12-
$provide;
12+
$provide,
13+
$filterProvider;
1314

1415
function setControllerProvider(value) {
1516
$controllerProvider = value;
@@ -19,20 +20,25 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective
1920
$compileProvider = value;
2021
lazyDirectives.setCompileProvider(value);
2122
}
22-
23-
function setProvide(value){
23+
24+
function setProvide(value) {
2425
$provide = value;
2526
lazyServices.setProvide(value);
2627
}
27-
28+
29+
function setFilterProvider(value) {
30+
$filterProvider = value;
31+
lazyFilters.setFilterProvider(value);
32+
}
33+
2834
// Use this as a guide to extend... current "services" is only value provide
2935
// Services should use factory
3036
//$provide.value('a', 123);
3137
//$provide.factory('a', function() { return 123; });
3238
//$compileProvider.directive('directiveName', ...);
3339
//$filterProvider.register('filterName', ...);
34-
35-
40+
41+
3642
function config(templateUrl, controllerName, controllers, lazyResources) {
3743
if (!$controllerProvider) {
3844
throw new Error("$controllerProvider is not set!");
@@ -47,45 +53,46 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective
4753
};
4854
routeDefinition.controller = controllerName;
4955
routeDefinition.resolve = {
50-
delay:function ($q, $rootScope) {
56+
delay: function ($q, $rootScope) {
5157
defer = $q.defer();
5258
if (!html) {
5359
var dependencies = ["text!" + templateUrl, controllerName];
5460
if (controllers) {
5561
dependencies = dependencies.concat(controllers);
5662
}
57-
if(lazyResources){
58-
if (lazyResources.directives) {
59-
dependencies = dependencies.concat(lazyResources.directives);
60-
}
61-
if (lazyResources.services) {
62-
dependencies = dependencies.concat(lazyResources.services);
63-
64-
}
63+
if (lazyResources) {
64+
dependencies = dependencies.concat(lazyResources.directives);
65+
dependencies = dependencies.concat(lazyResources.services);
66+
dependencies = dependencies.concat(lazyResources.filters);
6567
}
6668
require(dependencies, function () {
6769
var template = arguments[0];
6870
$controllerProvider.register(controllerName, arguments[1]);
6971

7072
if (controllers) {
7173
for (var i = 2; i < 2 + controllers.length; i++) {
72-
$controllerProvider.register(arguments[i][0], arguments[i][1]); }
74+
$controllerProvider.register(arguments[i][0], arguments[i][1]);
75+
}
7376
}
74-
if(lazyResources){
75-
if (lazyResources.directives) {
76-
for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) {
77+
if (lazyResources) {
78+
for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) {
79+
80+
// TODO refactor this mess...
81+
if (i === (2 + (controllers == null ? 0 : controllers.length))) {
7782
lazyDirectives.register(arguments[i]);
7883
}
79-
}
80-
if (lazyResources.services) {
81-
for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) {
84+
85+
if (i === (2 + (controllers == null ? 0 : controllers.length) + 1)) {
8286
lazyServices.register(arguments[i]);
8387
}
88+
89+
if (i === (2 + (controllers == null ? 0 : controllers.length) + 2)) {
90+
lazyFilters.register(arguments[i]);
91+
}
8492
}
8593
}
8694

8795

88-
8996
html = template;
9097
defer.resolve();
9198
$rootScope.$apply()
@@ -102,10 +109,11 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective
102109
}
103110

104111
return {
105-
setControllerProvider:setControllerProvider,
106-
setCompileProvider:setCompileProvider,
112+
setControllerProvider: setControllerProvider,
113+
setCompileProvider: setCompileProvider,
107114
setProvide: setProvide,
108-
config:config
115+
setFilterProvider: setFilterProvider,
116+
config: config
109117
}
110118
})
111119

app/partials/view1.html

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<div>
22
<h1>{{message}}</h1>
3+
No filter: {{greeting}}<br>
4+
Reverse: {{greeting|reverse}}
35
</div>

0 commit comments

Comments
 (0)