From df6962ee621f3600889b185dc6c7147c05e325a6 Mon Sep 17 00:00:00 2001 From: AvivLander Date: Sun, 31 Mar 2013 12:45:31 +0300 Subject: [PATCH 1/3] example of lazy services, can be extended easily for filters and factory services. check comments --- app/admin/controllers/fourth.js | 15 +++++ app/admin/partials/admin.html | 7 +++ app/css/app.css | 0 app/css/bootstrap.css | 0 app/index.html | 3 + app/js/app.js | 5 +- app/js/controllers/first.js | 5 +- app/js/controllers/second.js | 0 app/js/controllers/third.js | 15 +++++ app/js/directives/version.js | 0 app/js/main.js | 0 app/js/routes.js | 5 +- app/js/services/tester.js | 13 ++++ app/js/utils/lazy-directives.js | 0 app/js/utils/lazy-services.js | 21 +++++++ app/js/utils/route-config.js | 62 +++++++++++++++---- app/lib/angular/angular-bootstrap-prettify.js | 0 app/lib/angular/angular-bootstrap.js | 0 app/lib/angular/angular-cookies.js | 0 app/lib/angular/angular-cookies.min.js | 0 app/lib/angular/angular-loader.js | 0 app/lib/angular/angular-loader.min.js | 0 app/lib/angular/angular-resource.js | 0 app/lib/angular/angular-resource.min.js | 0 app/lib/angular/angular-sanitize.js | 0 app/lib/angular/angular-sanitize.min.js | 0 app/lib/angular/angular.js | 0 app/lib/angular/angular.min.js | 0 app/lib/angular/version.txt | 0 app/lib/jquery/jquery.js | 0 app/lib/require/require.js | 0 app/lib/require/text.js | 0 app/partials/view1.html | 0 app/partials/view2.html | 0 34 files changed, 133 insertions(+), 18 deletions(-) create mode 100755 app/admin/controllers/fourth.js create mode 100755 app/admin/partials/admin.html mode change 100644 => 100755 app/css/app.css mode change 100644 => 100755 app/css/bootstrap.css mode change 100644 => 100755 app/index.html mode change 100644 => 100755 app/js/app.js mode change 100644 => 100755 app/js/controllers/first.js mode change 100644 => 100755 app/js/controllers/second.js create mode 100755 app/js/controllers/third.js mode change 100644 => 100755 app/js/directives/version.js mode change 100644 => 100755 app/js/main.js mode change 100644 => 100755 app/js/routes.js create mode 100755 app/js/services/tester.js mode change 100644 => 100755 app/js/utils/lazy-directives.js create mode 100755 app/js/utils/lazy-services.js mode change 100644 => 100755 app/js/utils/route-config.js mode change 100644 => 100755 app/lib/angular/angular-bootstrap-prettify.js mode change 100644 => 100755 app/lib/angular/angular-bootstrap.js mode change 100644 => 100755 app/lib/angular/angular-cookies.js mode change 100644 => 100755 app/lib/angular/angular-cookies.min.js mode change 100644 => 100755 app/lib/angular/angular-loader.js mode change 100644 => 100755 app/lib/angular/angular-loader.min.js mode change 100644 => 100755 app/lib/angular/angular-resource.js mode change 100644 => 100755 app/lib/angular/angular-resource.min.js mode change 100644 => 100755 app/lib/angular/angular-sanitize.js mode change 100644 => 100755 app/lib/angular/angular-sanitize.min.js mode change 100644 => 100755 app/lib/angular/angular.js mode change 100644 => 100755 app/lib/angular/angular.min.js mode change 100644 => 100755 app/lib/angular/version.txt mode change 100644 => 100755 app/lib/jquery/jquery.js mode change 100644 => 100755 app/lib/require/require.js mode change 100644 => 100755 app/lib/require/text.js mode change 100644 => 100755 app/partials/view1.html mode change 100644 => 100755 app/partials/view2.html diff --git a/app/admin/controllers/fourth.js b/app/admin/controllers/fourth.js new file mode 100755 index 0000000..056133f --- /dev/null +++ b/app/admin/controllers/fourth.js @@ -0,0 +1,15 @@ +/** + * Created with IntelliJ IDEA. + * User: Mateusz + * Date: 15.11.12 + * Time: 22:38 + */ + +'use strict'; + +define([], function () { + + return ['FourthController', function ($scope) { + $scope.message = "I'm the 4th controller!"; + }] +}) diff --git a/app/admin/partials/admin.html b/app/admin/partials/admin.html new file mode 100755 index 0000000..7929a9e --- /dev/null +++ b/app/admin/partials/admin.html @@ -0,0 +1,7 @@ +
+

{{message}}

+

{{message}}

+

{{message}}

+

Still - {{message}}

+
+ diff --git a/app/css/app.css b/app/css/app.css old mode 100644 new mode 100755 diff --git a/app/css/bootstrap.css b/app/css/bootstrap.css old mode 100644 new mode 100755 diff --git a/app/index.html b/app/index.html old mode 100644 new mode 100755 index c423a55..9112905 --- a/app/index.html +++ b/app/index.html @@ -11,10 +11,13 @@
view1 view2 + admin
+ + diff --git a/app/js/app.js b/app/js/app.js old mode 100644 new mode 100755 index 429e554..b443769 --- a/app/js/app.js +++ b/app/js/app.js @@ -6,9 +6,10 @@ */ 'use strict'; -define(['angular', 'utils/route-config'], function (angular, routeConfig, lazyDirectives) { +define(['angular', 'utils/route-config'], function (angular, routeConfig) { - return angular.module('myApp', [], function ($compileProvider, $controllerProvider) { + return angular.module('myApp', [], function ($provide, $compileProvider, $controllerProvider) { + routeConfig.setProvide($provide); routeConfig.setCompileProvider($compileProvider); routeConfig.setControllerProvider($controllerProvider); }) diff --git a/app/js/controllers/first.js b/app/js/controllers/first.js old mode 100644 new mode 100755 index af3d151..00ee6ca --- a/app/js/controllers/first.js +++ b/app/js/controllers/first.js @@ -9,8 +9,9 @@ define([], function () { - function FirstController($scope) { - $scope.message = "I'm the 1st controller!"; + function FirstController($scope, tester) { + $scope.message = "I'm the 1st controller!" + tester; + console.log(tester); } return FirstController; diff --git a/app/js/controllers/second.js b/app/js/controllers/second.js old mode 100644 new mode 100755 diff --git a/app/js/controllers/third.js b/app/js/controllers/third.js new file mode 100755 index 0000000..cca66e5 --- /dev/null +++ b/app/js/controllers/third.js @@ -0,0 +1,15 @@ +/** + * Created with IntelliJ IDEA. + * User: Mateusz + * Date: 15.11.12 + * Time: 22:38 + */ + +'use strict'; + +define([], function () { + + return ['ThirdController', function ($scope) { + $scope.message = "I'm the 3rd controller!"; + }] +}) diff --git a/app/js/directives/version.js b/app/js/directives/version.js old mode 100644 new mode 100755 diff --git a/app/js/main.js b/app/js/main.js old mode 100644 new mode 100755 diff --git a/app/js/routes.js b/app/js/routes.js old mode 100644 new mode 100755 index 5bd14b7..9df0138 --- a/app/js/routes.js +++ b/app/js/routes.js @@ -10,8 +10,9 @@ define(['app', 'utils/route-config'], function (app, routeConfig) { return app.config(function ($routeProvider) { - $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first')); - $routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', ['directives/version'])); + $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester']})); + $routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester']})); + $routeProvider.when('/admin', routeConfig.config('../admin/partials/admin.html', 'controllers/second', ['controllers/third', '../admin/controllers/fourth'])); $routeProvider.otherwise({redirectTo:'/view1'}); }); diff --git a/app/js/services/tester.js b/app/js/services/tester.js new file mode 100755 index 0000000..9cd0a1f --- /dev/null +++ b/app/js/services/tester.js @@ -0,0 +1,13 @@ +/** + * Created with IntelliJ IDEA. + * User: Mateusz + * Date: 22.11.12 + * Time: 22:04 + */ + +'use strict'; + +define([], function () { + + return ['tester', 'tester123'] +}) \ No newline at end of file diff --git a/app/js/utils/lazy-directives.js b/app/js/utils/lazy-directives.js old mode 100644 new mode 100755 diff --git a/app/js/utils/lazy-services.js b/app/js/utils/lazy-services.js new file mode 100755 index 0000000..ba3f88d --- /dev/null +++ b/app/js/utils/lazy-services.js @@ -0,0 +1,21 @@ +define([], function () { + + var $provide; + + function setProvide(value) { + console.log(value); + $provide = value; + } + + function register(service) { + if (!$provide) { + throw new Error("$setProvide is not set!"); + } + $provide.value(service[0], service[1]); + } + + return { + setProvide:setProvide, + register:register + } +}) diff --git a/app/js/utils/route-config.js b/app/js/utils/route-config.js old mode 100644 new mode 100755 index b86c340..d159223 --- a/app/js/utils/route-config.js +++ b/app/js/utils/route-config.js @@ -5,10 +5,11 @@ * Time: 22:38 */ -define(['utils/lazy-directives'], function (lazyDirectives) { +define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirectives, lazyServices) { var $controllerProvider, - $compileProvider; + $compileProvider, + $provide; function setControllerProvider(value) { $controllerProvider = value; @@ -18,8 +19,21 @@ define(['utils/lazy-directives'], function (lazyDirectives) { $compileProvider = value; lazyDirectives.setCompileProvider(value); } - - function config(templateUrl, controllerName, directives) { + + function setProvide(value){ + $provide = value; + lazyServices.setProvide(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!"); } @@ -36,19 +50,42 @@ define(['utils/lazy-directives'], function (lazyDirectives) { delay:function ($q, $rootScope) { defer = $q.defer(); if (!html) { - var dependencies = [controllerName, "text!" + templateUrl]; - if (directives) { - dependencies = dependencies.concat(directives); + var dependencies = ["text!" + templateUrl, controllerName]; + if (controllers) { + dependencies = dependencies.concat(controllers); + } + if(lazyResources){ + if (lazyResources.directives) { + dependencies = dependencies.concat(lazyResources.directives); + } + if (lazyResources.services) { + dependencies = dependencies.concat(lazyResources.services); + + } } require(dependencies, function () { - var controller = arguments[0], - template = arguments[1]; + var template = arguments[0]; + $controllerProvider.register(controllerName, arguments[1]); - for (var i = 2; i < arguments.length; i++) { - lazyDirectives.register(arguments[i]); + if (controllers) { + for (var i = 2; i < 2 + controllers.length; i++) { + $controllerProvider.register(arguments[i][0], arguments[i][1]); } + } + if(lazyResources){ + if (lazyResources.directives) { + for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { + lazyDirectives.register(arguments[i]); + } + } + if (lazyResources.services) { + for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { + lazyServices.register(arguments[i]); + } + } } - $controllerProvider.register(controllerName, controller); + + html = template; defer.resolve(); $rootScope.$apply() @@ -67,6 +104,7 @@ define(['utils/lazy-directives'], function (lazyDirectives) { return { setControllerProvider:setControllerProvider, setCompileProvider:setCompileProvider, + setProvide: setProvide, config:config } }) diff --git a/app/lib/angular/angular-bootstrap-prettify.js b/app/lib/angular/angular-bootstrap-prettify.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-bootstrap.js b/app/lib/angular/angular-bootstrap.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-cookies.js b/app/lib/angular/angular-cookies.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-cookies.min.js b/app/lib/angular/angular-cookies.min.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-loader.js b/app/lib/angular/angular-loader.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-loader.min.js b/app/lib/angular/angular-loader.min.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-resource.js b/app/lib/angular/angular-resource.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-resource.min.js b/app/lib/angular/angular-resource.min.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-sanitize.js b/app/lib/angular/angular-sanitize.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular-sanitize.min.js b/app/lib/angular/angular-sanitize.min.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular.js b/app/lib/angular/angular.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/angular.min.js b/app/lib/angular/angular.min.js old mode 100644 new mode 100755 diff --git a/app/lib/angular/version.txt b/app/lib/angular/version.txt old mode 100644 new mode 100755 diff --git a/app/lib/jquery/jquery.js b/app/lib/jquery/jquery.js old mode 100644 new mode 100755 diff --git a/app/lib/require/require.js b/app/lib/require/require.js old mode 100644 new mode 100755 diff --git a/app/lib/require/text.js b/app/lib/require/text.js old mode 100644 new mode 100755 diff --git a/app/partials/view1.html b/app/partials/view1.html old mode 100644 new mode 100755 diff --git a/app/partials/view2.html b/app/partials/view2.html old mode 100644 new mode 100755 From 4cd49a0de2a931f6e67b128e55c8d15833b6d42b Mon Sep 17 00:00:00 2001 From: AvivLander Date: Sun, 31 Mar 2013 16:49:34 +0300 Subject: [PATCH 2/3] Added filter example and should remove lazy resources when not called. --- app/js/app.js | 3 +- app/js/controllers/first.js | 5 +-- app/js/filters/reverse.js | 28 +++++++++++++++ app/js/routes.js | 4 +-- app/js/services/tester.js | 2 +- app/js/utils/lazy-directives.js | 15 +++++--- app/js/utils/lazy-filters.js | 25 +++++++++++++ app/js/utils/lazy-services.js | 17 +++++---- app/js/utils/route-config.js | 62 +++++++++++++++++++-------------- app/partials/view1.html | 2 ++ 10 files changed, 119 insertions(+), 44 deletions(-) create mode 100644 app/js/filters/reverse.js create mode 100755 app/js/utils/lazy-filters.js diff --git a/app/js/app.js b/app/js/app.js index b443769..ff966a1 100755 --- a/app/js/app.js +++ b/app/js/app.js @@ -8,9 +8,10 @@ define(['angular', 'utils/route-config'], function (angular, routeConfig) { - return angular.module('myApp', [], function ($provide, $compileProvider, $controllerProvider) { + return angular.module('myApp', [], function ($provide, $compileProvider, $controllerProvider, $filterProvider) { routeConfig.setProvide($provide); routeConfig.setCompileProvider($compileProvider); routeConfig.setControllerProvider($controllerProvider); + routeConfig.setFilterProvider($filterProvider); }) }); diff --git a/app/js/controllers/first.js b/app/js/controllers/first.js index 00ee6ca..b703b08 100755 --- a/app/js/controllers/first.js +++ b/app/js/controllers/first.js @@ -10,8 +10,9 @@ define([], function () { function FirstController($scope, tester) { - $scope.message = "I'm the 1st controller!" + tester; - console.log(tester); + $scope.message = "I'm the 1st controller! " + tester; + $scope.greeting = "Hello world!"; + } return FirstController; diff --git a/app/js/filters/reverse.js b/app/js/filters/reverse.js new file mode 100644 index 0000000..52c946a --- /dev/null +++ b/app/js/filters/reverse.js @@ -0,0 +1,28 @@ +/** + * Created with JetBrains WebStorm. + * User: avivcallander + * Date: 3/31/13 + * Time: 4:40 PM + * To change this template use File | Settings | File Templates. + */ + + +'use strict'; + +define([], function () { + + return ['reverse', function() { + return function(input, uppercase) { + var out = ""; + for (var i = 0; i < input.length; i++) { + out = input.charAt(i) + out; + } + // conditional based on optional argument + if (uppercase) { + out = out.toUpperCase(); + } + return out; + }}]; +}) + + diff --git a/app/js/routes.js b/app/js/routes.js index 9df0138..81da643 100755 --- a/app/js/routes.js +++ b/app/js/routes.js @@ -10,8 +10,8 @@ define(['app', 'utils/route-config'], function (app, routeConfig) { return app.config(function ($routeProvider) { - $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester']})); - $routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester']})); + $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester'], filters: ['filters/reverse']})); + $routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester'], filters: []})); $routeProvider.when('/admin', routeConfig.config('../admin/partials/admin.html', 'controllers/second', ['controllers/third', '../admin/controllers/fourth'])); $routeProvider.otherwise({redirectTo:'/view1'}); diff --git a/app/js/services/tester.js b/app/js/services/tester.js index 9cd0a1f..693d11b 100755 --- a/app/js/services/tester.js +++ b/app/js/services/tester.js @@ -9,5 +9,5 @@ define([], function () { - return ['tester', 'tester123'] + return ['tester', 'test service via value return'] }) \ No newline at end of file diff --git a/app/js/utils/lazy-directives.js b/app/js/utils/lazy-directives.js index 26f110e..56b0a46 100755 --- a/app/js/utils/lazy-directives.js +++ b/app/js/utils/lazy-directives.js @@ -14,14 +14,19 @@ define([], function () { } function register(directive) { - if (!$compileProvider) { - throw new Error("$compileProvider is not set!"); + if(directive){ + if (!$compileProvider) { + throw new Error("$compileProvider is not set!"); + } + $compileProvider.directive.apply(null, directive); + }else{ + $compileProvider.directive.apply = null; } - $compileProvider.directive.apply(null, directive); + } return { - setCompileProvider:setCompileProvider, - register:register + setCompileProvider: setCompileProvider, + register: register } }) diff --git a/app/js/utils/lazy-filters.js b/app/js/utils/lazy-filters.js new file mode 100755 index 0000000..d888821 --- /dev/null +++ b/app/js/utils/lazy-filters.js @@ -0,0 +1,25 @@ +define([], function () { + + var $filterProvider; + + function setFilterProvider(value) { + $filterProvider = value; + } + + function register(filter) { + if(filter){ + if (!$filterProvider) { + throw new Error("$setProvide is not set!"); + } + $filterProvider.register(filter[0], filter[1]); + }else{ + $filterProvider.register = null; + } + + } + + return { + setFilterProvider: setFilterProvider, + register: register + } +}) diff --git a/app/js/utils/lazy-services.js b/app/js/utils/lazy-services.js index ba3f88d..4ee4c95 100755 --- a/app/js/utils/lazy-services.js +++ b/app/js/utils/lazy-services.js @@ -3,19 +3,24 @@ define([], function () { var $provide; function setProvide(value) { - console.log(value); $provide = value; } function register(service) { - if (!$provide) { - throw new Error("$setProvide is not set!"); + if (service) { + if (!$provide) { + throw new Error("$setProvide is not set!"); + } + $provide.value(service[0], service[1]); + } else { + $provide.value = null; } - $provide.value(service[0], service[1]); + } + return { - setProvide:setProvide, - register:register + setProvide: setProvide, + register: register } }) diff --git a/app/js/utils/route-config.js b/app/js/utils/route-config.js index d159223..d0b7789 100755 --- a/app/js/utils/route-config.js +++ b/app/js/utils/route-config.js @@ -5,11 +5,12 @@ * Time: 22:38 */ -define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirectives, lazyServices) { +define(['utils/lazy-directives', 'utils/lazy-services', 'utils/lazy-filters'], function (lazyDirectives, lazyServices, lazyFilters) { var $controllerProvider, $compileProvider, - $provide; + $provide, + $filterProvider; function setControllerProvider(value) { $controllerProvider = value; @@ -19,20 +20,25 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective $compileProvider = value; lazyDirectives.setCompileProvider(value); } - - function setProvide(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!"); @@ -47,21 +53,17 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective }; routeDefinition.controller = controllerName; routeDefinition.resolve = { - delay:function ($q, $rootScope) { + delay: function ($q, $rootScope) { defer = $q.defer(); if (!html) { var dependencies = ["text!" + templateUrl, controllerName]; if (controllers) { dependencies = dependencies.concat(controllers); } - if(lazyResources){ - if (lazyResources.directives) { - dependencies = dependencies.concat(lazyResources.directives); - } - if (lazyResources.services) { - dependencies = dependencies.concat(lazyResources.services); - - } + if (lazyResources) { + dependencies = dependencies.concat(lazyResources.directives); + dependencies = dependencies.concat(lazyResources.services); + dependencies = dependencies.concat(lazyResources.filters); } require(dependencies, function () { var template = arguments[0]; @@ -69,23 +71,28 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective if (controllers) { for (var i = 2; i < 2 + controllers.length; i++) { - $controllerProvider.register(arguments[i][0], arguments[i][1]); } + $controllerProvider.register(arguments[i][0], arguments[i][1]); + } } - if(lazyResources){ - if (lazyResources.directives) { - for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { + if (lazyResources) { + for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { + + // TODO refactor this mess... + if (i === (2 + (controllers == null ? 0 : controllers.length))) { lazyDirectives.register(arguments[i]); } - } - if (lazyResources.services) { - for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { + + if (i === (2 + (controllers == null ? 0 : controllers.length) + 1)) { lazyServices.register(arguments[i]); } + + if (i === (2 + (controllers == null ? 0 : controllers.length) + 2)) { + lazyFilters.register(arguments[i]); + } } } - html = template; defer.resolve(); $rootScope.$apply() @@ -102,10 +109,11 @@ define(['utils/lazy-directives', 'utils/lazy-services'], function (lazyDirective } return { - setControllerProvider:setControllerProvider, - setCompileProvider:setCompileProvider, + setControllerProvider: setControllerProvider, + setCompileProvider: setCompileProvider, setProvide: setProvide, - config:config + setFilterProvider: setFilterProvider, + config: config } }) diff --git a/app/partials/view1.html b/app/partials/view1.html index 92257b3..ffa58ed 100755 --- a/app/partials/view1.html +++ b/app/partials/view1.html @@ -1,3 +1,5 @@

{{message}}

+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
From f3fd0cc9c3550614649bfdd419faf2d40c2e56e4 Mon Sep 17 00:00:00 2001 From: AvivLander Date: Sun, 31 Mar 2013 17:31:39 +0300 Subject: [PATCH 3/3] bug fix --- app/js/controllers/first.js | 4 +-- app/js/controllers/second.js | 4 +-- app/js/routes.js | 2 +- app/js/utils/route-config.js | 48 +++++++++++++++++++----------------- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/app/js/controllers/first.js b/app/js/controllers/first.js index b703b08..160dddc 100755 --- a/app/js/controllers/first.js +++ b/app/js/controllers/first.js @@ -9,8 +9,8 @@ define([], function () { - function FirstController($scope, tester) { - $scope.message = "I'm the 1st controller! " + tester; + function FirstController($scope) { + $scope.message = "I'm the 1st controller!"; $scope.greeting = "Hello world!"; } diff --git a/app/js/controllers/second.js b/app/js/controllers/second.js index d20e40e..89c2c09 100755 --- a/app/js/controllers/second.js +++ b/app/js/controllers/second.js @@ -9,8 +9,8 @@ define([], function () { - function SecondController($scope) { - $scope.message = "I'm the 2nd controller!"; + function SecondController($scope, tester) { + $scope.message = "I'm the 2nd controller! " + tester; } return SecondController; diff --git a/app/js/routes.js b/app/js/routes.js index 81da643..39298a1 100755 --- a/app/js/routes.js +++ b/app/js/routes.js @@ -10,7 +10,7 @@ define(['app', 'utils/route-config'], function (app, routeConfig) { return app.config(function ($routeProvider) { - $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: ['services/tester'], filters: ['filters/reverse']})); + $routeProvider.when('/view1', routeConfig.config('../partials/view1.html', 'controllers/first', null, {directives: ['directives/version'], services: [], filters: ['filters/reverse']})); $routeProvider.when('/view2', routeConfig.config('../partials/view2.html', 'controllers/second', null, {directives: ['directives/version'], services: ['services/tester'], filters: []})); $routeProvider.when('/admin', routeConfig.config('../admin/partials/admin.html', 'controllers/second', ['controllers/third', '../admin/controllers/fourth'])); diff --git a/app/js/utils/route-config.js b/app/js/utils/route-config.js index d0b7789..bf3c4e8 100755 --- a/app/js/utils/route-config.js +++ b/app/js/utils/route-config.js @@ -66,39 +66,43 @@ define(['utils/lazy-directives', 'utils/lazy-services', 'utils/lazy-filters'], f dependencies = dependencies.concat(lazyResources.filters); } require(dependencies, function () { - var template = arguments[0]; - $controllerProvider.register(controllerName, arguments[1]); - if (controllers) { - for (var i = 2; i < 2 + controllers.length; i++) { - $controllerProvider.register(arguments[i][0], arguments[i][1]); + // 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) { - for (var i = 2 + (controllers == null ? 0 : controllers.length); i < arguments.length; i++) { - - // TODO refactor this mess... - if (i === (2 + (controllers == null ? 0 : controllers.length))) { + if (lazyResources.directives) { + for (var i = (baseNumber); i < baseNumber + directiveNumber; i++) { lazyDirectives.register(arguments[i]); } - - if (i === (2 + (controllers == null ? 0 : controllers.length) + 1)) { + } + if (lazyResources.services) { + for (var i = (baseNumber) + directiveNumber; i < baseNumber + directiveNumber + serviceNumber; i++) { lazyServices.register(arguments[i]); } - - if (i === (2 + (controllers == null ? 0 : controllers.length) + 2)) { + } + 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() } + ) - - html = template; - defer.resolve(); - $rootScope.$apply() - }) - - } else { + } + else { defer.resolve(); } return defer.promise;