There is no way to use Blade templating within an external Javascript file.
Laravel can only pass data to a view/template; Javascript files are loaded externally and therefore App data is not passed to them.
In order to get around this, you need to create <script>
tags within your Blade template file:
{{-- Code in your template file, e.g., view.blade.php --}}
<script type="text/javascript">
// Put all locations into array
var locations = [
@foreach ($articles as $article)
[ "{{ $article->lat }}", "{{ $article->lng }}" ],
@endforeach
];
// NOTE: I've added a comma which will be needed to delimit each array within the array.
// Quotes will also be needed since lat and long are not integers.
</script>
Make sure that this snippet comes before the code for including your maps.js
file. If you've inlcuded the maps.js
file within your <head>
tags, you're going to need to move that inclusion snippet down to the bottom of the page.
This is a rather rudimentary solution, however. A better way would be to use AJAX to retrieve the data from within your maps.js
file upon initialization.
This would, of course, require you to create a new Controller method and corresponding route that can handle the request and return the required data.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…