Ver Fonte

Missing route and Route contexts with invalid queries redirect to home.

Frederic G. MARAND há 8 anos atrás
pai
commit
9c3476e85b
1 ficheiros alterados com 25 adições e 11 exclusões
  1. 25 11
      routing.js

+ 25 - 11
routing.js

@@ -60,7 +60,6 @@ function router() {
   var path = null;
   var query;
   var templateName = null;
-  var urlArray = null;
 
   // Current route url (getting rid of "#" in hash as well):
   var matches = location.hash.match(/^#?([\w]*)(?:\?)?(.*)?/);
@@ -97,6 +96,7 @@ function router() {
   }
   else {
     console.warn("Content found but no route matching", path);
+    window.location.assign("");
   }
 }
 
@@ -104,18 +104,32 @@ function router() {
 window.addEventListener("hashchange", router);
 window.addEventListener("load", router);
 
-// Route declarations.
-route("/", function (q) {
-  console.log("Home controller", q);
+/**
+ * Route declarations:
+ *
+ * - route context functions return a context instance.
+ * - on invalid arguments, they redirect to the home page
+ */
+route("/", function HomeContext() {
+  console.log("Home page");
 });
 
-route("class", function (q) {
-  console.log("Class controller", q);
-  this.greeting = "Hello world!";
-  this.moreText = "Bacon ipsum...";
+route("class", function ClassContext(q) {
+  this.class = q.class ? q.class : null;
+  if (!this.class) {
+    window.location.assign("");
+  }
+  console.log("Class page", this.class);
+});
+
+route("species", function SpeciesContext(q) {
+  this.species = q.species ? q.species : null;
+  if (!this.species) {
+    window.location.assign("");
+  }
+  console.log("Species page", this.species);
 });
 
-route("species", function (q) {
-  console.log("Species controller", q);
-  this.heading = "I\"m page two!";
+route("about", function AboutContext() {
+  console.log("About page");
 });