implemented refs draft

This commit is contained in:
Fabian Keller 2017-06-15 13:53:53 +02:00
commit 14660f9d68
6 changed files with 66 additions and 3 deletions

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charSet="utf-8"/>
<title>Refs</title>
</head>
<body id="body">
<div id="ROOT"></div>
<script type="text/javascript" src="nimcache/demo.js"></script>
</body>
</html>

39
experiments/refs/demo.nim Normal file
View file

@ -0,0 +1,39 @@
include karaxprelude
import random
var
modelData = @[5, 2, 4]
refA = VNodeRef()
refB = VNodeRef()
refSeq = newSeq[VNodeRef]()
proc onClick(ev: Event, n: VNode) =
kout(refA)
kout(refB)
kout(refSeq)
proc secureRefSlot(i: int): VNodeRef =
while refSeq.len <= i:
refSeq.add(VNodeRef())
result = refSeq[i]
proc view(): VNode =
result = buildHtml():
tdiv:
button(onclick=onClick):
text "click me"
# storing refs to single elements is straightforward now
tdiv(nref=refA):
text "A"
tdiv(nref=refB):
text "B"
# It's a bit more tricky when containers are involved:
for i, x in modelData.pairs:
tdiv(nref=secureRefSlot(i)):
text "List item: " & $x
proc renderer(): VNode =
view()
setRenderer renderer

View file

@ -0,0 +1 @@
--path: "../../src"