Hi, I'm stuck...

Consider this function 
<https://github.com/simon-brooke/youyesyet/blob/feature/reflow-app/src/cljs/youyesyet/canvasser_app/ui_utils.cljs#L46>
:

(defn big-link
  [text & {:keys [target handler]}]
  (js/console.log (str "Big link with target '" target "'; handler '" handler 
"'"))
  [:div.big-link-container {:key (gensym "big-link")}
   [:a.big-link (merge {}
                  (if target {:href target}{})
                  (if handler {:on-click handler}{}))
    text]])


You'd think that if you passed it a handler, it would generate an on-click 
attribute on the anchor. It's called (among other places) here 
<https://github.com/simon-brooke/youyesyet/blob/feature/reflow-app/src/cljs/youyesyet/canvasser_app/views/gdpr.cljs#L58>
:

(ui/big-link "I consent"
             :handler #(fn
                         []
                         (ui/log-and-dispatch
                           [:set-consent-and-page
                            {:elector-id (:id elector)
                             :page :elector
                             :elector (merge
                                        elector
                                        :signature
                                        (.toDataURL
                                          sig-pad
                                          "image/svg+xml")
                                        )}])))


And sure enough, it prints in the console log:

Big link with target ''; handler 'function (){
return ((function (elector){
return (function (){
return youyesyet.canvasser_app.ui_utils.log_and_dispatch.call(null,new 
cljs.core.PersistentVector(null, 2, 5, 
cljs.core.PersistentVector.EMPTY_NODE, [new 
cljs.core.Keyword(null,"set-consent-and-page","set-consent-and-page",-160828440),new
 
cljs.core.PersistentArrayMap(null, 3, [new 
cljs.core.Keyword(null,"elector-id","elector-id",1904559247),new 
cljs.core.Keyword(null,"id","id",-1388402092).cljs$core$IFn$_invoke$arity$1(elector),new
 
cljs.core.Keyword(null,"page","page",849072397),new 
cljs.core.Keyword(null,"elector","elector",-948994537),new 
cljs.core.Keyword(null,"elector","elector",-948994537),cljs.core.merge.call(null,elector,new
 
cljs.core.Keyword(null,"signature","signature",1463754794),youyesyet.canvasser_app.views.gdpr.sig_pad.toDataURL("image/svg+xml"))],
 
null)], null));
});
;})(elector))
}'


But when you click the resulting link, nothing at all happens, and what you 
get when you inspect the generated element, it is:

<a class="big-link">I consent</a>


So, what am I doing wrong? What do I need to do to get an 'on-click' 
handler working? And, if that's not possible, what's the workaround?

I can't extract the signature from the signature pad at page layout time, 
because the user hasn't yet signed it. It must be extracted when the link 
is selected.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to