UNPKG

4.43 kBHTMLView Raw
1<!DOCTYPE html>
2<html>
3<head>
4 <title>Hello Batman</title>
5 <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
6
7 <link rel="stylesheet" href="resources/reset.css" type="text/css">
8 <link rel="stylesheet" href="resources/hello.css" type="text/css">
9
10 <script src="../lib/coffee-script.js"></script>
11 <script src="../lib/es5-shim.js"></script>
12 <script src="../lib/batman.js"></script>
13 <script src="../lib/batman.solo.js"></script>
14 <style>
15 body {
16 font-family: Arial, sans-serif;
17 }
18
19 h1 {
20 margin: 5px;
21 font-size: 140%;
22 }
23
24 p {
25 margin: 5px;
26 }
27
28 input {
29 width: 100px;
30 }
31
32 div {
33 background-color: rgba(0,0,0,0.05);
34 border: 1px solid #eee;
35 border-radius: 3px;
36 padding: 2px;
37 margin: 2px;
38 }
39
40 div.main {
41 width: 200px;
42 display: inline-block;
43 background-color: #fff;
44 }
45
46 a {
47 color: #900;
48 font-weight: bold;
49 float: right;
50 text-decoration: none;
51 font-size: 80%;
52 }
53 </style>
54</head>
55
56<body>
57 <div id="container">
58 <h1>Working example (old batman)</h1>
59 <p>Remove "2.1" by clicking [x], and you'll see it removes only what it should.</p>
60 <div class="main">
61 <div data-foreach-obj="data.children">
62 <input data-bind="obj.id">
63 <div data-partial="objview"></div>
64 </div>
65 </div>
66
67 <div data-defineview="objview">
68 <div data-foreach-obj="obj.children">
69 <strong data-bind="obj.id"></strong><a data-event-click="obj.delete">[x]</a>
70 <div data-partial="objview"></div>
71 </div>
72 </div>
73 </div>
74
75 <script type="text/coffeescript">
76 class BugApp extends Batman.App
77
78 class BugObj extends Batman.Object
79 delete: ->
80 data = BugApp.get 'data'
81 walk = (element) =>
82 parent = element
83 if element.get('children')
84 for child in element.get('children').toArray()
85 if child.get('id') == @get('id')
86 console.log 'FOUND IT!'
87 parent.get('children').remove @
88 walk(child)
89 walk(data)
90
91 Batman.DOM.IteratorBinding::deferEvery = false
92 data = new BugObj({
93 id: '0',
94 children: new Batman.Set(
95 new BugObj({
96 id: '1',
97 children: new Batman.Set(
98 new BugObj({
99 id: '1.1',
100 children: new Batman.Set()
101 })
102 )
103 }),
104 new BugObj({
105 id: '2',
106 children: new Batman.Set(
107 new BugObj({
108 id: '2.1',
109 children: new Batman.Set(
110 new BugObj({
111 id: '2.1.1'
112 children: new Batman.Set()
113 })
114 )
115 }),
116 new BugObj({
117 id: '2.2',
118 children: new Batman.Set(
119 new BugObj({
120 id: '2.2.1'
121 children: new Batman.Set()
122 })
123 )
124 }),
125 new BugObj({
126 id: '2.3',
127 children: new Batman.Set(
128 new BugObj({
129 id: '2.3.1'
130 children: new Batman.Set()
131 })
132 )
133 })
134 )
135 }),
136 new BugObj({
137 id: '3',
138 children: new Batman.Set(
139 new BugObj({
140 id: '3.1',
141 children: new Batman.Set()
142 })
143 )
144 })
145 )
146 })
147
148 BugApp.set 'data', data
149 BugApp.run()
150
151 window.debugging = false
152 setTimeout ->
153 window.debugging = true
154 , 500
155 </script>
156</body>
157</html>