ViewManager.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. let ViewManager = (
  2. function()
  3. {
  4. var _viewArray = [];
  5. var _viewMap = {};
  6. return {
  7. registerView(viewName,viewNode) {
  8. _viewMap[viewName] = viewNode;
  9. },
  10. replaceView(viewName,hideViewName) {
  11. if (!_viewMap[viewName]) {
  12. return null;
  13. }
  14. if (hideViewName) {
  15. var view1 = _viewMap[hideViewName];
  16. if (view1) {
  17. for (var i = 0; i < _viewArray.length; i++) {
  18. if (_viewArray[i].nodeName == hideViewName) {
  19. _viewArray[i].nodeView.active = false;
  20. _viewArray.splice(i, 1);
  21. break;
  22. }
  23. }
  24. }
  25. }
  26. var view2 = _viewMap[viewName];
  27. if (_viewArray.length > 0) {
  28. var i = 0;
  29. var viewShowed = false;
  30. for (i = 0; i < _viewArray.length; i++) {
  31. if (_viewArray[i].nodeName == viewName && _viewArray[i].nodeView.active == true) {
  32. viewShowed = true;
  33. break;
  34. }
  35. }
  36. if (!viewShowed) {
  37. for (var i = 0; i < _viewArray.length; i++) {
  38. _viewArray[i].nodeView.active = false;
  39. }
  40. _viewArray = [];
  41. _viewArray[0] = {'nodeView': view2,'nodeName': viewName};
  42. _viewArray[0].nodeView.active = true;
  43. }
  44. } else {
  45. _viewArray[0] = {'nodeView': view2, 'nodeName': viewName}
  46. _viewArray[0].nodeView.active = true;
  47. }
  48. return view2;
  49. },
  50. PushView(viewName) {
  51. if (!_viewMap[viewName]) {
  52. return null;
  53. }
  54. var view = _viewMap[viewName];
  55. _viewArray[_viewArray.length] = {'nodeView':view,'nodeName':viewName}
  56. _viewArray[_viewArray.length - 1].nodeView.active = true;
  57. return view;
  58. },
  59. PopView(viewName) {
  60. if (viewName == undefined) {
  61. var view = _viewArray[_viewArray.length - 1].nodeView.active = false;
  62. _viewArray.splice(_viewArray.length - 1, 1);
  63. return view;
  64. } else {
  65. var view = _viewMap[viewName];
  66. if (view) {
  67. for (var i = 0; i < _viewArray.length; i++) {
  68. if (_viewArray[i].nodeName == viewName) {
  69. _viewArray[i].nodeView.active = false;
  70. _viewArray.splice(i,1);
  71. break;
  72. }
  73. }
  74. return view;
  75. }
  76. }
  77. },
  78. PopAllView() {
  79. for (var i = 0; i < _viewArray.length; i++) {
  80. this.PopView();
  81. }
  82. },
  83. TopView() {
  84. if (_viewArray.length == 0) {
  85. return null;
  86. }
  87. return _viewArray[_viewArray.length - 1];
  88. },
  89. CurrentView() {
  90. if (_viewArray.length == 0) {
  91. return null;
  92. }
  93. return _viewArray[_viewArray.length - 1];
  94. }
  95. };
  96. }
  97. )();
  98. export default ViewManager;