implemented refs draft
This commit is contained in:
parent
45931c5e4a
commit
14660f9d68
6 changed files with 66 additions and 3 deletions
13
experiments/refs/demo.html
Normal file
13
experiments/refs/demo.html
Normal 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
39
experiments/refs/demo.nim
Normal 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
|
||||
1
experiments/refs/demo.nims
Normal file
1
experiments/refs/demo.nims
Normal file
|
|
@ -0,0 +1 @@
|
|||
--path: "../../src"
|
||||
Loading…
Add table
Add a link
Reference in a new issue