Created
March 27, 2015 11:53
-
-
Save bensu/020f9063f6d38b3d48f1 to your computer and use it in GitHub Desktop.
Routing trouble
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(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