回答編集履歴

1

追記

2017/10/06 11:23

投稿

s8_chu
s8_chu

スコア14731

test CHANGED
@@ -167,3 +167,193 @@
167
167
  </html>
168
168
 
169
169
  ```
170
+
171
+ 追記
172
+
173
+ ---
174
+
175
+ ```HTML
176
+
177
+ <!DOCTYPE html>
178
+
179
+ <html lang="ja" ng-app="myApp">
180
+
181
+ <head>
182
+
183
+ <title>Angular JS & Chart.js バインド</title>
184
+
185
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
186
+
187
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.1.1/Chart.min.js"></script>
188
+
189
+ </head>
190
+
191
+ <body>
192
+
193
+ <div ng-controller="formCtrl as form">
194
+
195
+ <form name="myForm" novalidate>
196
+
197
+ <p ng-repeat="item in form.items">
198
+
199
+ <ng-form name="formItem">
200
+
201
+ {{item.month}}の場面:<input type="number" ng-change="form.change(formItem,$index);" ng-required="true"
202
+
203
+ min="1" max="10" ng-pattern="/^[0-9]+$/" ng-model="item.num">
204
+
205
+ <br>
206
+
207
+ <span ng-show="!formItem.$valid">1~10間で<br>入力して下さい。</span>
208
+
209
+ </ng-form>
210
+
211
+ </p>
212
+
213
+ </form>
214
+
215
+ <canvas id="myCan" width="600" height="400"></canvas>
216
+
217
+ </div>
218
+
219
+ <!--angular-->
220
+
221
+ <script>
222
+
223
+ var app = angular.module('myApp', []);
224
+
225
+ app.controller('formCtrl', function () {
226
+
227
+ var me = this;
228
+
229
+ var can = document.getElementById("myCan");
230
+
231
+ var ctx = can.getContext("2d");
232
+
233
+ me.items = [
234
+
235
+ {num: 1, month: 1},
236
+
237
+ {num: 5, month: 2},
238
+
239
+ {num: 6, month: 3},
240
+
241
+ {num: 7, month: 4},
242
+
243
+ {num: 5, month: 5},
244
+
245
+ ];
246
+
247
+
248
+
249
+ var addData = (function () {
250
+
251
+ var arr = [];
252
+
253
+ for (var i = 0; i < me.items.length; i++) {
254
+
255
+ arr.push(me.items[i].num);
256
+
257
+ }
258
+
259
+
260
+
261
+ for (var j = 0; j < arr.length; j++) {
262
+
263
+ chartData[j].value = arr[j];
264
+
265
+ }
266
+
267
+ }());
268
+
269
+
270
+
271
+ var myChart = new Chart(ctx).Pie(chartData);
272
+
273
+
274
+
275
+ me.change = function (formName, ind) {
276
+
277
+ if (!formName.$valid) return false;
278
+
279
+ myChart.segments[ind].value = me.items[ind].num;
280
+
281
+ myChart.update();
282
+
283
+ };
284
+
285
+ });
286
+
287
+
288
+
289
+ var chartData = [
290
+
291
+ {
292
+
293
+ value: 300,
294
+
295
+ color: "#9acce3",
296
+
297
+ highlight: "#aadbf2",
298
+
299
+ label: "1"
300
+
301
+ },
302
+
303
+ {
304
+
305
+ value: 300,
306
+
307
+ color: "#70b062",
308
+
309
+ highlight: "#7fc170",
310
+
311
+ label: "2"
312
+
313
+ },
314
+
315
+ {
316
+
317
+ value: 300,
318
+
319
+ color: "#dbdf19",
320
+
321
+ highlight: "#ecef23",
322
+
323
+ label: "3"
324
+
325
+ },
326
+
327
+ {
328
+
329
+ value: 300,
330
+
331
+ color: "#a979ad",
332
+
333
+ highlight: "#bb8ebf",
334
+
335
+ label: "4"
336
+
337
+ },
338
+
339
+ {
340
+
341
+ value: 300,
342
+
343
+ color: "#cd5638",
344
+
345
+ highlight: "#e2694a",
346
+
347
+ label: "5"
348
+
349
+ }
350
+
351
+ ];
352
+
353
+ </script>
354
+
355
+ </body>
356
+
357
+ </html>
358
+
359
+ ```