Skip to content

Commit ddc80f1

Browse files
committed
New implementation using promises, now loads template and controller in paraller, removed old custom directives
1 parent 83b58db commit ddc80f1

File tree

14 files changed

+2360
-189
lines changed

14 files changed

+2360
-189
lines changed

app/css/app.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
/* app css stylesheet */
22

3+
body {
4+
padding-left: 20px;
5+
padding-top: 20px;
6+
}

app/index.html

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,8 @@
1313
<a href="#/view2" class="btn">view2</a>
1414
</div>
1515

16-
<div mb-lazy-controller-view ng></div>
16+
<div ng-view class="well well-small"></div>
1717

18-
<div class="well" mb-lazy-controller="controllers/third">
19-
<h1>{{message}}</h1>
20-
</div>
21-
22-
<script data-main="js/main" src="lib/requirejs/require.js"></script>
18+
<script data-main="js/main" src="lib/require/require.js"></script>
2319
</body>
2420
</html>

app/js/controllers/first.js

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,11 @@
77

88
'use strict';
99

10-
define(['app'], function (app) {
10+
define([], function () {
1111

12-
var FirstController = function ($scope, $timeout) {
13-
var message = "I'm the 1st controller! random: ";
14-
$scope.message = message;
15-
16-
function update() {
17-
$scope.message = message + Math.random();
18-
$timeout(update, 1000);
19-
}
20-
21-
update();
12+
function FirstController($scope) {
13+
$scope.message = "I'm the 1st controller!";
2214
}
2315

24-
FirstController.$inject = ['$scope', '$timeout'];
25-
26-
app.controller('FirstController', FirstController);
27-
2816
return FirstController;
2917
});

app/js/controllers/second.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,11 @@
77

88
'use strict';
99

10-
define(['app'], function (app) {
10+
define([], function () {
1111

12-
var SecondController = function ($scope, $timeout) {
13-
var message = "I'm the 2nd controller! random: ";
14-
15-
$scope.message = message;
16-
17-
function update() {
18-
$scope.message = message + Math.random();
19-
$timeout(update, 1000);
20-
}
21-
22-
update();
12+
function SecondController($scope) {
13+
$scope.message = "I'm the 2nd controller!";
2314
}
2415

25-
SecondController.$inject = ['$scope', '$timeout'];
26-
27-
app.controller('SecondController', SecondController);
28-
2916
return SecondController;
3017
});

app/js/controllers/third.js

Lines changed: 0 additions & 31 deletions
This file was deleted.

app/js/directives.js

Lines changed: 0 additions & 109 deletions
This file was deleted.

app/js/main.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
require.config({
1111
baseUrl:'js',
1212
paths:{
13+
text:'../lib/require/text',
1314
jquery:'../lib/jquery/jquery',
1415
angular:'../lib/angular/angular'
1516
},
@@ -26,9 +27,9 @@ require.config({
2627

2728
require([
2829
'angular',
30+
'text',
2931
'jquery',
3032
'app',
31-
'directives',
3233
'routes'
3334
], function (angular) {
3435
//This function will be called when all the dependencies

app/js/routes.js

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,41 @@
99

1010
define(['app'], function (app) {
1111

12-
return app.config(function ($routeProvider) {
13-
$routeProvider.when('/view1', {
14-
templateUrl:'partials/view1.html'
15-
});
16-
$routeProvider.when('/view2', {
17-
templateUrl:'partials/view2.html',
18-
controllerModule:'controllers/second'
19-
});
12+
function viewConfig(controllerProvider, controllerName, templateUrl) {
13+
var defer,
14+
html,
15+
routeDefinition = {};
16+
17+
routeDefinition.template = function () {
18+
return html;
19+
};
20+
routeDefinition.controller = controllerName;
21+
routeDefinition.resolve = {
22+
delay:function ($q, $rootScope) {
23+
defer = $q.defer();
24+
if (!routeDefinition.html) {
25+
26+
require([controllerName, "text!" + templateUrl], function (controller, template) {
27+
controllerProvider.register(controllerName, controller);
28+
html = template;
29+
defer.resolve(true);
30+
$rootScope.$apply()
31+
})
32+
33+
} else {
34+
defer.resolve(true);
35+
}
36+
return defer.promise;
37+
}
38+
}
39+
40+
return routeDefinition;
41+
}
42+
43+
return app.config(function ($routeProvider, $controllerProvider) {
44+
$routeProvider.when('/view1', viewConfig($controllerProvider, 'controllers/first', '../partials/view1.html'));
45+
$routeProvider.when('/view2', viewConfig($controllerProvider, 'controllers/second', '../partials/view2.html'));
46+
2047
$routeProvider.otherwise({redirectTo:'/view1'});
2148
});
2249

0 commit comments

Comments
 (0)