From d3fc084c42d02dbcdbb639c464c0da16223af4e2 Mon Sep 17 00:00:00 2001 From: Xie Yanbo Date: Fri, 30 Oct 2020 17:44:38 +0800 Subject: [PATCH] added documentation on rendering to string when using event handlers (#162) --- readme.rst | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/readme.rst b/readme.rst index 4b8cec2..5d3e862 100644 --- a/readme.rst +++ b/readme.rst @@ -353,3 +353,30 @@ modules can be used since there is no JS interpreter. result = $vnode echo render() + +Generate HTML with event handlers +================================= + +If you are writing a static site generator or do server-side HTML rendering +via ``nim c``, you may want to override ``addEventHandler`` when using event +handlers to avoid compiler complaints. + +Here's an example of auto submit a dropdown when a value is selected: + +.. code-block:: nim + + template kxi(): int = 0 + template addEventHandler(n: VNode; k: EventKind; action: string; kxi: int) = + n.setAttr($k, action) + + let + names = @["nim", "c", "python"] + selected_name = request.params.getOrDefaul("name") + hello = buildHtml(html): + form(`method` = "get"): + select(name="name", onchange="this.form.submit()"): + for name in names: + if name == selected_name: + option(selected = ""): text name + else: + option: text name