I've been following a tutorial and adapted slightly. For some reason I keep
getting this error when ever I try to transact! or update! the app-state:
Uncaught Error: No protocol method ICollection.-conj defined for type
cljs.core/Atom: [object Object]
Does anyone know what I'm doing wrong. Heres the code:
(ns dashboard.core
(:require-macros [cljs.core.async.macros :refer [go alt!]])
(:require [goog.events :as events]
[cljs.core.async :refer [put! <! >! chan timeout]]
[om.core :as om :include-macros true]
[om.dom :as dom :include-macros true]
[cljs-http.client :as http]))
(enable-console-print!)
(println "Hello world!")
(def app-state
(atom {}))
(defn fetch-departments
[url]
(let [c (chan)]
(go
;;(let [{departments :body} (<! (http/get url))]
(let [departments [{:department "Departement 1"} {:department
"Departement 2"}]]
(>! c (vec departments))))
c))
(defn department [{:keys [department]} owner opts]
(om/component
(dom/li nil department)))
(defn department-list [{:keys [departments]}]
(om/component
(apply dom/ul nil
(om/build-all department departments))))
(defn departments-box [app owner opts]
(reify
om/IInitState
(init-state [_]
;; THIS IS THE LINE THAT ERRORS
(om/transact! app :departments (fn [] [])))
om/IWillMount
(will-mount [_]
(go (while true
(let [departments (<! (fetch-departments (:url opts)))]
(.log js/console (pr-str departments))
(om/update! app #(assoc % :departments departments))
)
(<! (timeout (:poll-interval opts))))))
om/IRender
(render [_]
(dom/h1 nil "Departments")
(om/build department-list app))))
(defn om-app [app owner]
(om/component
(dom/div nil
(om/build departments-box app
{:opts {:url "http://localhost:3030/api/departments"
:poll-interval 2000}}))))
(om/root om-app app-state {:target (. js/document (getElementById
"main-container"))})
--
Note that posts from new members are moderated - please be patient with your
first post.
---
You received this message because you are subscribed to the Google Groups
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.