【问题标题】:Laravel does not evaluate the curly brackets when including .js file包含 .js 文件时,Laravel 不计算大括号
【发布时间】:2018-09-25 04:10:22
【问题描述】:

我有一个带有以下脚本的 js 文件

alert("{{ route('contacts.show',':contactid:') }}");

我使用了 .js 文件并将其包含在我的刀片视图中

<script type="text/javascript" src={{ asset('admin/js/contact/test.js') }}></script>

但是如果我在刀片视图中编写脚本。它确实评估大括号内的代码。

【问题讨论】:

  • 当然,为什么会这样。 JS 文件不被 PHP 处理。
  • JS文件不是刀片视图。
  • 添加带大括号的外部js文件的正确方法是什么?所以它会评估其中的代码。
  • 我只是想将 javascript 与 html 分开。我现在所做的是,我在刀片模板中添加了一堆 javascript,并将其包含在我的主刀片模板中,以便评估 javascript 中的花括号。我很确定这不是正确的方法,但到目前为止它达到了我的预期目的。

标签: javascript jquery laravel blade


【解决方案1】:

JS 文件没有被 PHP 处理,所以 Laravel 刀片模板在 JS 文件中不会生效。您应该做的是,通过将路由值注入 JS 变量,在 JS ON THE PHP PAGE 中的变量中定义路由。然后你就可以在你的 JS 文件中访问那个变量了。

<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
</head>
<body>
    <script>
        // Inject the PHP route value into a JS variable.
        window.route = '<?php echo route("contacts.show",":contactid:"); ?>';
        // You can also use 'let route = ...' to declare the variable.
    </script>
    <script src="./main.js"></script>
</body>
</html>

main.js:

alert(route);

【讨论】:

    【解决方案2】:

    大括号仅在刀片文件中执行。如果您需要将 JS 保持在外部并且不将代码合并到刀片模板中,您可以在刀片中定义一个 JS 变量,在全局 JS 范围内,在其后加载外部 JS,然后在您的 js 中使用该变量。

    在刀片中

     <script>
        var contactsRoute = ""{{ route('contacts.show',':contactid:') }}"";
     </script>
    <script type="text/javascript" src={{ asset('admin/js/contact/test.js') }}></script>
    

    在外部js中

    alert(contactsRoute);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 2019-05-28
      • 2012-11-13
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      相关资源
      最近更新 更多