Tengo una lista de números en mi pageController.php
$half2018 = [235, 1234, 134, 564, 364, 362]; return view('page', 'half2018'=>$half2018);Llamo a esa variable en mi página.blade.php
<canvas id="chart_1" class="chart-canvas" data-info="{{ $half2018 }}"></canvas>Luego, al final de page.blade.php tengo
<script src="./assets/js/chart.js"></script>En mi archivo chart.js llamo
let app = document.getElementById('claims_chart_12'); let info = JSON.parse(app.dataset.id); console.log(info);Por alguna razón, la biblioteca JSON no está cargada. ¿Es una forma correcta de pasar los datos al archivo .js?
La sintaxis en su controlador debe ser
$half2018 = [235, 1234, 134, 564, 364, 362]; return view('page', ['half2018' => $half2018]);o
return view('page', compact('half2018')); En su archivo blade, puede configurar la variable en un atributo data-* después de que se convierta a JSON válido. Utilice comillas simples para ello.
<canvas id="chart_1" class="chart-canvas" data-info='{{ json_encode($half2018) }}'></canvas>Creo que esto es equivalente a
<canvas id="chart_1" class="chart-canvas" data-info='@json($half2018)'></canvas>Luego, en su js, puede analizar este JSON.
let canvas = document.getElementById('chart_1'); let info = JSON.parse(canvas.dataset.id); console.log(info);@IGP señaló mi sintaxis en Controller.php. Después de cambiar la línea en el archivo chart.js a
let info = JSON.parse(canvas.dataset.info); console.log(info)entonces obtengo
[235, 1234, 134, 564, 364, 362]en mi archivo .js.