This is a very cool trick! I happened to need this: I'm making a filtering
page with a ton of checkboxes, and every time I check any one of them, I
want to reload stuff from the server. My first solution was to add my
"reloadStuff" function in every onchange handler of every checkbox. I've
now replaced that with the trick mentioned above: one dyn tag which depends
on the signals of every checkbox source, and it renders a script tag when
something changes. Much cleaner! Have to be a little bit careful that I
don't start abusing this though.
Side note: the <script> tag in basis can only be placed in the <head> part
of an html document, so if you want to apply this you'll need to use the JS
ffi to make a new "bodyscript" tag, as mentioned in the manual in chapter
11.3)
Post by Adam ChlipalaLet me try to disentangle the potential parts of your question.
I hope you are not asking about literally writing code in JavaScript. I
will proceed as though you are actually asking about *client-side code*,
but let me know if I misunderstood. (It is a rather nice feature of Ur/Web
that writing Ur/Web programs need not involve JavaScript at all, anymore
than we talk about "transistors" when reading JavaScript code!)
So, then, I conclude that your question is how to add a listener on a
[source], to run arbitrary client-side code whenever the source changes.
You seem to be on a good track there, with the mention of a dummy node. I
would create a <dyn> node that generates only a <script> node, whose 'code'
handler will then be run whenever the source changes, such that this <dyn>
node contributes no content to the page.
is it possible to trigger javascript code when calling 'set s ...' ?
as i understand the main usage seems to be regenerating html node trees; i
think i could get away with generating some dummy html node with the
javascript call in onload event, but I'm asking just to make sure I'm not
missing anything.
my goal is, for instance, to update some state on the client side and
trigger a canvas redraw,
since i seem to be unable to call '... <- signal s;' inside a 'transaction
page'
_______________________________________________
Ur mailing list
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur