2015-09-14 13 views
7

私は秘書と試薬を使用しています。これは私のコードです:clojurescriptでクエリパラメータを取得するには?

無視
(def view (atom nil)) 

(defn layout [view] 
    [:div @view]) 

(reagent/render-component [layout view] (.getElementById js/document "message")) 

(secretary/set-config! :prefix "") 

(secretary/defroute home-path "/" [query-params] 
    (timbre/info "Path : /, query params : " query-params) 
    (let [warning (:warning query-params) 
     success (:success query-params) 
     login-failed (:login_failed query-params)] 
    (when warning 
     (timbre/info "Warning found : " warning) 
     (reset! view [:h4 [:span.label.label-warning warning]])) 
    (when success 
     (timbre/info "Success found : " success) 
     (reset! view [:h4 [:span.label.label-info success]])) 
    (when login-failed 
     (timbre/info "Login failed") 
     (reset! view [:h4 [:span.label.label-warning "Login Failed."]])))) 

(let [h (History.)] 
(goog.events/listen h EventType.NAVIGATE #(secretary/dispatch! (.-token %))) 
(doto h 
    (.setEnabled true))) 

:プレフィックス値(私は「」、「#」を試しても設定しない:すべての接頭辞を):

http://localhost:8080/login#/?success=SuccessMessage 
このコードはのみのようなルートで動作します

しかし、それはのようなルートでは動作しません:私は実際に達成しようとしている何

http://localhost:8080/login?success=SuccessMessage 

は、障害が発生した場合に

に私をリダイレクトする、 friendからログイン失敗を解析することです
http://localhost:8080/login?&login_failed=Y&username=someUser 

と表示ログインに失敗したというメッセージが表示されます。 私はこの秘書を使用する必要はありません、クエリパラメータを解析するために働くものは私にとっては問題ありません。

ハードな方法は、私が取得することができ、クエリ文字列を解析するために、次のようになります。

(-> js/window .-location .-search) 

私はこれはすでにいくつかのライブラリによくやっていると信じています。

答えて

11

私はそれを見つけました。 https://github.com/cemerick/url(両方のClojureとclojurescriptのための作品)を使用して、一つは行うことができます。

(require '[cemerick.url :as url]) 
(:query (url/url (-> js/window .-location .-href))) 
関連する問題