index.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. $(function() {
  2. var firstInHistory = true;
  3. var MainView = Backbone.View.extend({
  4. el: $("div.container"),
  5. modalTemplate: _.template($("#modal-template").html()),
  6. events:{
  7. "click ul.the-icons > li": "iconClicked"
  8. },
  9. iconClicked: function(event) {
  10. event.preventDefault();
  11. var $item = $(event.currentTarget);
  12. var $iconName = $item.find("i").attr("class");
  13. mainRouter.navigate("icon/" + $iconName, {trigger: true});
  14. firstInHistory = false;
  15. }
  16. });
  17. var MainRouter = Backbone.Router.extend({
  18. routes: {
  19. "": "checkModal",
  20. "icon/:iconName": "showIcon"
  21. },
  22. checkModal: function() {
  23. var $modal = $("div.modal");
  24. if ($modal.length > 0) {
  25. $modal.modal("hide");
  26. }
  27. },
  28. showIcon: function(iconName) {
  29. var $modal = $(mainView.modalTemplate({"iconName": iconName}));
  30. $modal.modal("show");
  31. $modal.on('hidden', function () {
  32. $modal.remove();
  33. if (firstInHistory) {
  34. mainRouter.navigate("/", {trigger: false});
  35. firstInHistory = false;
  36. } else {
  37. window.history.back();
  38. }
  39. })
  40. }
  41. });
  42. var mainView = new MainView();
  43. var mainRouter = new MainRouter();
  44. Backbone.history.start({pushState : false});
  45. });