8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

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

Oleksandr Nos 1月前

14 0

我正在尝试使用本教程和 Laravel 5 制作一个商店定位器应用程序。这里和这里的问题中的人似乎正在使用 @foreach 循环和其他 blade 模板语言来运行......

教程 和 Laravel 5 制作一个商店定位器应用程序 (这里 and 这里) 似乎正在使用 @foreach 循环和其他 blade 模板语言来遍历他们的纬度/经度坐标。他们是怎么做到的?

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

我正在使用包含以下代码的 js 文件 (maps.js) 显示我的地图:

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。

帖子版权声明 1、本帖标题:如何在脚本文件中使用 Laravel Blade?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Oleksandr Nos在本站《ajax》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 无法在外部 Javascript 文件中使用 Blade 模板。

    Laravel 只能将数据传递给视图/模板;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 方法和相应的路由,以处理请求并返回所需的数据。

  • 这对我来说非常完美!但是,有没有办法用多个变量来实现呢?例如,如果我想将内容放入每个标记中。我该怎么做呢?

  • 你是什​​么意思?在你的控制器中你可以传递更多的变量..比如 view('myView', ['variable1' => $variable1, 'variable2' => $variable2, etc...]);

  • grog 1月前 0 只看Ta
    引用 5

    是的,我想在变量 locations 中放置单独的数组。例如,对于每个位置,我还想注入位置的标题和一些其他信息。看到这篇文章后,我又发布了一个与此相关的问题。也许这会帮助澄清我的问题:.com/questions/45924237/…

  • 您可以 JavaScript Eloquent 对象创建一个对象,例如看一下下面的代码:

    // index.blade.php
    <script>var userObj = {{ $authUser or 'undefined' }}</script>
    

    这是一个 blade 视图,我只是使用类似这样的方法加载 view 并将其传递 collection 给视图(使用 视图编辑器 ):

    View::composer('layouts.master', function($view) {
        $user = null;
        if(Auth::check()) {
            $user = Auth::user();
        }
        $view->with('authUser', $user);
    });
    

    因此, view $authUser 将其转换为 JS 对象,如下所示:

    <script>var userObj = {{ $authUser or 'undefined' }}</script>
    

    所以现在我可以将其用作 JS 中的对象 userObj (JavaScript)。查看 我近一年前写的 这篇文章 Laravel-4 .

  • 在您提供的示例中,它们使用 blade,因为它们位于 blade 文件中,并且所有 JavaScript 都在标记之间。它不是 .js 文件类型,因此您可以通过这种方式使用 blade 语言功能。

返回
作者最近主题: