quiero enviar los datos que obtengo del controlador al archivo javascript que existe en public/js/maps.js ¿cómo puedo hacer esto? ¿alguien puede ayudar?
mi controlador de código:
public function index() { $userIp = "45.153.242.129"; $locationData = \Location::get($userIp); return view('maps.index',[ 'location' => $locationData ]); }ver pagina:
<div id="world-map"></div>mapas.js
var handleVectorMap = function() { "use strict"; if ($('#world-map').length !== 0) { $('#world-map').vectorMap({ map: 'world_mill', scaleColors: [COLOR_GREY_DARKER, COLOR_GREY_LIGHTER], normalizeFunction: 'polynomial', hoverOpacity: 0.5, hoverColor: false, zoomOnScroll: true, markerStyle: { initial: { fill: COLOR_RED, stroke: 'transparent', r: 3 } }, regionStyle: { initial: { fill: COLOR_DARK_LIGHTER, "fill-opacity": 1, stroke: 'none', "stroke-width": 0.4, "stroke-opacity": 1 }, hover: { "fill-opacity": 0.8 }, selected: { fill: 'yellow' }, selectedHover: { } }, backgroundColor: 'transparent', markers: [ {latLng: [41.90, 12.45], name: 'Vatican City'}, {latLng: [43.73, 7.41], name: 'Monaco'}, ] }); } };entonces quiero mostrar datos en marcadores que existen en el archivo javascript.
Si estuviera en un archivo de hoja única, podría hacer eco de las variables json_encoded
<div id="world-map"></div> <script> const data = JSON.parse('{{ json_encode($data); }}'); </script>Si está en un archivo js separado, debe obtenerlo a través de una solicitud ajax o almacenar los datos en un elemento html para consultar dentro de su archivo js.
Algo como
<div id="world-map" data-maps='{{ json_encode($data) }}'></div> const data = JSON.parse(document.getElementById('world-map').dataset.maps);Creo que Blade tiene una directiva @json solo para ese escenario.
en el caso normal, cuando llama a un dato del controlador, generalmente usamos
{{ $data }}
pero si desea llamar a los mismos datos pero dentro de un código o archivo javascript, le recomiendo usar
function (index, value) { data = '<p>'+value.data+'</P>' }