gpt4 book ai didi

javascript - 如何在脚本文件中使用 Laravel Blade?

转载 作者:IT王子 更新时间:2023-10-29 00:10:38 25 4
gpt4 key购买 nike

我正在尝试使用这个 tutorial 制作一个商店定位器应用程序和 Laravel 5. 这些问题中的人 HereHere似乎正在使用@foreach 循环和其他 Blade 模板语言来运行它们的纬度/经度坐标。他们是怎么做到的?

当我的 map 代码在 js 文件中时,我基本上不知道如何使用 blade 遍历坐标?这怎么可能?我做错了什么吗?

我正在使用具有以下代码的 js 文件 (maps.js) 显示我的 map :

function initialize() {

var map_canvas = document.getElementById('map');

// Initialise the map
var map_options = {
center: location,
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(map_canvas, map_options)

// Put all locations into array
var locations = [
@foreach ($articles as $article)
[ {{ $article->lat }}, {{ $article->lng }} ]
@endforeach
];

for (i = 0; i < locations.length; i++) {
var location = new google.maps.LatLng(locations[i][0], locations[i][1]);

var marker = new google.maps.Marker({
position: location,
map: map,
});
}

// marker.setMap(map); // Probably not necessary since you set the map above

}

但很明显,它卡在了@foreach 行上。

PS:如果有人使用 Laravel 5 遵循本教程,我将不胜感激关于这部分的任何信息:使用 PHP 输出 XML。

最佳答案

无法在外部 Javascript 文件中使用 Blade 模板。

Laravel 只能将数据传递给 View /模板; Javascript 文件是从外部加载的,因此应用程序数据不会传递给它们。

为了解决这个问题,您需要创建 <script> Blade 模板文件中的标签:

{{-- 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>

确保此代码段包含您的maps.js 的代码之前文件。如果您包含了 maps.js您的 <head> 中的文件标签,您需要将该包含片段向下移动到页面底部。

然而,这是一个相当初级的解决方案。更好的方法是使用 AJAX 从 maps.js 中检索数据初始化文件。

当然,这需要您创建一个新的 Controller 方法和相应的路由来处理请求并返回所需的数据。

关于javascript - 如何在脚本文件中使用 Laravel Blade?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com