如何在js文件中使用Laravel Blade?

我正在尝试使用tutorial和Laravel 5创建一个商店定位器应用。这些问题中的人们Here和Here似乎正在使用@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文件是从外部加载的,因此App数据不会传递给它们。

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

{{-- 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方法和相应的路由,以处理请求并返回所需的数据。

以上是 如何在js文件中使用Laravel Blade? 的全部内容, 来源链接: www.h5w3.com/121830.html

回到顶部