質問編集履歴

2

解決しました!

2016/05/17 00:19

投稿

azxsedcvfr
azxsedcvfr

スコア12

test CHANGED
File without changes
test CHANGED
@@ -1,280 +1,34 @@
1
- ###前提・実現したいこと
1
+ 解決まし
2
-
3
- MVCを勉強するため、MVCを意識して
4
-
5
- 簡易なタスクリストをJavaScriptで作っています。
6
2
 
7
3
 
8
4
 
9
- タスクはすでに登録てあり(jsonで取ってきイメージ)
5
+ ###前提・実現したいこと
10
6
 
11
- ボタンをクリックすることで、クリックれたユーザーに合った
7
+ こに質問したいこを詳細に書いてくだ
12
8
 
13
- タスクリストに表示する機能をりたす。
9
+ (例)PHP(CakePHP)で●●なシテムを作ってす。
14
10
 
15
-
16
-
17
- ザーをクリクすると、前のユザのタスクは消え
11
+ ■■な機能を実装中に以下エラジが発生しました。
18
-
19
- クリックしたユーザーのタスクに切り替わる。
20
12
 
21
13
 
22
14
 
23
15
  ###発生している問題・エラーメッセージ
24
16
 
25
- クリックされたユーザーに合ったタスクをDOMに書き出したいのだけど
26
17
 
27
- コードのどの位置にどのように書けばいいのか分からない。
28
18
 
19
+ ```
20
+
29
- MVC的にはどこに書くべきなのか?
21
+ エラーメッセージ
22
+
23
+ ```
30
24
 
31
25
 
32
26
 
33
27
  ###該当のソースコード
34
28
 
35
- ```JavaScript
29
+ ```ここに言語を入力
36
30
 
37
- window.addEventListener('load', function () {
38
-
39
- new TaskListController();
31
+ ここにご自身が実行したソースコードを書いてください
40
-
41
- new UserListController();
42
-
43
- });
44
-
45
-
46
-
47
- /*ユーザーリスト関連*/
48
-
49
-
50
-
51
- function UserListController() {
52
-
53
- var self = this;
54
-
55
-
56
-
57
- this.view = new UserListView();
58
-
59
- this.model = new UserListModel();
60
-
61
-
62
-
63
- EventDispatcher.on('userChange', function (id) {
64
-
65
- var user = self.model.get(id);
66
-
67
- });
68
-
69
- }
70
-
71
-
72
-
73
- function UserListModel() {
74
-
75
- this.list = {
76
-
77
- 1: 'たかし',
78
-
79
- 2: 'まこと',
80
-
81
- 3: 'せいや'
82
-
83
- };
84
-
85
-
86
-
87
- this.get = function get(id) {
88
-
89
- return this.list[id];
90
-
91
- };
92
-
93
-
94
-
95
- this.getAll = function getAll() {
96
-
97
- return this.list;
98
-
99
- };
100
-
101
- }
102
-
103
-
104
-
105
- function UserListView() {
106
-
107
- this.model = new UserListModel();
108
-
109
- this.container = document.getElementById('userList');
110
-
111
-
112
-
113
- this.create = function create(id, name) {
114
-
115
- var btn = document.createElement('button');
116
-
117
- btn.innerHTML = name;
118
-
119
- btn.addEventListener('click', function (){
120
-
121
- EventDispatcher.trigger('userChange', id);
122
-
123
- });
124
-
125
- return btn;
126
-
127
- };
128
-
129
-
130
-
131
- this.add = function add(user) {
132
-
133
- this.container.appendChild(user);
134
-
135
- };
136
-
137
-
138
-
139
- var data = this.model.getAll();
140
-
141
- for (var id in data){
142
-
143
- var name = data[id];
144
-
145
- var user = this.create(id, name);
146
-
147
- this.add(user);
148
-
149
- }
150
-
151
- }
152
-
153
-
154
-
155
- /*タスクリスト関連*/
156
-
157
-
158
-
159
- function TaskListController() {
160
-
161
- this.view = new TaskListView();
162
-
163
- this.model = new TaskListModel();
164
-
165
- }
166
-
167
-
168
-
169
- function TaskListModel() {
170
-
171
- this.list = {
172
-
173
- 1: ['食べる', '寝る', '遊ぶ'],
174
-
175
- 2: ['買い物', '散歩', '歌う'],
176
-
177
- 3: ['踊る', '寝る', '座る']
178
-
179
- };
180
-
181
-
182
-
183
- this.get = function get(id) {
184
-
185
- return this.list[id];
186
-
187
- };
188
-
189
- }
190
-
191
-
192
-
193
- function TaskListView() {
194
-
195
- this.model = new TaskListModel();
196
-
197
- this.container = document.getElementById('taskList');
198
-
199
-
200
-
201
- this.create = function create(text) {
202
-
203
- var item = document.createElement('li');
204
-
205
- item.innerHTML = text;
206
-
207
- return item;
208
-
209
- };
210
-
211
-
212
-
213
- this.add = function add(task) {
214
-
215
- this.container.appendChild(task);
216
-
217
- };
218
-
219
-
220
-
221
- var data = this.model.get();
222
-
223
- for (var id in data){
224
-
225
- var name = data[id];
226
-
227
- var task = this.create(id, name);
228
-
229
- this.add(task);
230
-
231
- }
232
-
233
- }
234
-
235
-
236
-
237
- function EventDispatcher() {}
238
-
239
-
240
-
241
- EventDispatcher.callbacks = {};
242
-
243
-
244
-
245
- // イベント発火時に実行する関数を登録
246
-
247
- EventDispatcher.on = function on(type, callback) {
248
-
249
- if ( typeof EventDispatcher.callbacks[type] === 'undefined' ){
250
-
251
- EventDispatcher.callbacks[type] = [];
252
-
253
- }
254
-
255
- EventDispatcher.callbacks[type].push(callback);
256
-
257
- };
258
-
259
-
260
-
261
- // イベントを発火(指定されたイベントに登録されてる関数を実行)
262
-
263
- EventDispatcher.trigger = function trigger(type, data) {
264
-
265
- var callbacks = EventDispatcher.callbacks[type];
266
-
267
- for (var i = 0; i < callbacks.length; i++){
268
-
269
- var callback = callbacks[i];
270
-
271
- callback(data);
272
-
273
- }
274
-
275
- };
276
-
277
-
278
32
 
279
33
  ```
280
34
 
@@ -282,9 +36,7 @@
282
36
 
283
37
  ###試したこと
284
38
 
285
- appendchild でタスク追加するのと考え、
39
+ 課題に対してアプローチしたこと記載してくさい
286
-
287
- 試行錯誤してみたがうまく動かず、訳が分からなくなってしまった。
288
40
 
289
41
 
290
42
 

1

説明の補足をしました

2016/05/17 00:19

投稿

azxsedcvfr
azxsedcvfr

スコア12

test CHANGED
File without changes
test CHANGED
@@ -8,12 +8,18 @@
8
8
 
9
9
  タスクはすでに登録してあり(jsonで取ってきたイメージ)
10
10
 
11
- ボタンをクリックすることで、クリックされたユーザー名毎の
11
+ ボタンをクリックすることで、クリックされたユーザーに合った
12
12
 
13
13
  タスクをタスクリストに表示する機能を作りたいです。
14
14
 
15
15
 
16
16
 
17
+ 別のユーザーをクリックすると、前のユーザのタスクは消え
18
+
19
+ クリックしたユーザーのタスクに切り替わる。
20
+
21
+
22
+
17
23
  ###発生している問題・エラーメッセージ
18
24
 
19
25
  クリックされたユーザーに合ったタスクをDOMに書き出したいのだけど