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>
|