Artyom Shalkhakov wrote:
Here's what I do:fun editable () = m<- source False; (* mode: editing or viewing *) t<- source "click to edit"; let fun act () = m'<- signal m; return (if m' then <xml><ctextbox source={t}/><button onclick={set m False}/></xml> else<xml><dyn signal={t'<- signal t; return (cdata t')}/></xml> in return<xml><body> <div onclick={m'<- get m; if not m' then set m True else return ()}> <dyn signal={act ()}/> </div> </body></xml> endI think it should work but actually clicking on the button doesn't revert the mode from editing to viewing. Is there something I do wrong?
Yes, and in fact it's just a simple misunderstanding, based on semantics inherited from HTML/JavaScript. The <button> you create is inside the <div> with an 'onclick' attribute. Thus, when you click on the button, _both_ 'onclick' handlers run. The <div>'s handler cancels the effect of the <button>'s handler! (You can add some [alert] calls to forcibly pause the process at different points; this lets you see the text appear and then disappear again.)
_______________________________________________ Ur mailing list [email protected] http://www.impredicative.com/cgi-bin/mailman/listinfo/ur
