diff --git a/just/observable-test.fnl b/just/observable-test.fnl index 29b8c72..011df31 100644 --- a/just/observable-test.fnl +++ b/just/observable-test.fnl @@ -57,3 +57,11 @@ (s:observe [:foo :bar] #(set win 4)) (s:update [:foo :bar :baz] 42) (expect (= win 2))) + +(let [s (observable.new {:foo {:bar {:baz 43}}})] + (var win 0) + ;; multiple observers can live on same subtree + (s:observe [:foo :bar] #(set win (+ win 1))) + (s:observe [:foo :bar] #(set win (+ win 1))) + (s:update [:foo :bar :baz] 42) + (expect (= win 2))) diff --git a/just/observable.fnl b/just/observable.fnl index 3f596e3..eb3014f 100644 --- a/just/observable.fnl +++ b/just/observable.fnl @@ -21,7 +21,7 @@ (let [el (get data self path)] (when el (if el._subscribers - (el._subscribers:insert fun) + (table.insert el._subscribers fun) (tset el :_subscribers [fun]))))) (fn new [data]