Skip to content

Instantly share code, notes, and snippets.

@bensu
Created March 27, 2015 11:53
Show Gist options
  • Save bensu/020f9063f6d38b3d48f1 to your computer and use it in GitHub Desktop.
Save bensu/020f9063f6d38b3d48f1 to your computer and use it in GitHub Desktop.
Routing trouble
(ns notes.core
(:import goog.History
goog.history.EventType)
(:require [reagent.core :as reagent :refer [atom]]
[secretary.core :as secretary]
[reagent.session :as session]
[reagent-forms.core :refer [bind-fields]]
[ajax.core :refer [POST]]
[goog.events])
(:require-macros [secretary.core :refer [defroute]]))
(enable-console-print!)
(defn hook-browser-navigation! []
(let [h (History.)]
(goog.events/listen
h
EventType.NAVIGATE
(fn [event]
(.log js/console event)
(secretary/dispatch! (.-token event))))
(.setEnabled h true)))
(defn navbar []
[:div.navbar.navbar-inverse.navbar-fixed-top
[:div.container
[:div.navbar-header
[:a.navbar-brand {:href "/"} "notes"]]
[:div.navbar-collapse.collapse
[:ul.nav.navbar-nav
[:li {:class (when (= :home (session/get :page)) "active")}
[:a {:href "#/"} "Home"]]
[:li {:class (when (= :about (session/get :page)) "active")}
[:a {:href "#/notes"} "My Notes"]]]]]])
(defn notes-page []
[:div "this is the story of notes... work in progress"])
(defn home-page []
[:div
[:h2 "Welcome to ClojureScript"]])
(def pages
{:home home-page
:notes notes-page})
(defn page []
[(pages (session/get :page))])
(defroute "/" [] (session/put! :page :home))
(defroute "/notes" [] (session/put! :page :notes))
(defn mount-components []
(reagent/render-component [navbar] (.getElementById js/document "navbar"))
(reagent/render-component [page] (.getElementById js/document "app")))
(defn init! []
(secretary/set-config! :prefix "#") ;; this makes no difference, why?
(session/put! :page :home)
(hook-browser-navigation!)
(mount-components))
(init!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment