-
Notifications
You must be signed in to change notification settings - Fork 71
/
Copy pathviewManager.js
55 lines (43 loc) · 1.04 KB
/
viewManager.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
define(function (require) {
var $ = require('jQuery');
var transition = require('./transition');
var viewManager = (function () {
var currentView;
var transitionType = $('#app').data('transition');
function showView(view) {
disposeView(currentView, function () {
render(view);
});
}
function disposeView(view, callback) {
if (!view) {
return callback();
}
return applyTransition(view.$el, transitionType, function () {
_disposeView(view);
return callback();
});
function applyTransition(el, name, callback) {
if (!name) {
return callback();
}
return transition.apply(el, name, callback);
}
function _disposeView(view) {
view.subviews && view.subviews.forEach(function (subview) {
_disposeView(subview);
});
view.remove();
}
}
function render(view) {
currentView = view;
$("#app").html(currentView.el);
currentView.render();
}
return {
show: showView
};
})();
return viewManager;
});