Laravel - 当路径改变时,Javascript无法找到图像

时间:2015-01-19 15:37:45

标签: javascript laravel assets

在我的Laravel模板中,我包含了一个JS文件。

这里我使用的是需要图片的插件。

    $.backstretch([
        "../img/header-tt-big.jpg",
        "../img/header-soccer-big.jpg"
    ]

所以..当我像这样去“我的”网页时,它正在工作: http://localhost/project/public/de/p1

当我到这里时,它将无法工作 http://localhost/project/public/de/p1/register

我必须为JS文件中的所有图像添加另一个“../”。如何在不每次手动更改阵列的情况下完成此工作?

谢谢:)

3 个答案:

答案 0 :(得分:6)

正如@ITroubs所指出的,如果您在刀片模板(<script>标记)中包含javascript代码,则可以并且应该使用asset()来生成网址。但是不要忘记额外的引号,以便javascript将其解释为字符串。

$.backstretch([
    "{{ asset('img/header-tt-big.jpg') }}",
    "{{ asset('img/header-soccer-big.jpg') }}"
]

但是,如果您将javascript代码放在单独的.js文件中(实际上是推荐),则无法执行此操作。相反,我建议您在需要它的javascript代码之前在布局刀片模板中定义assetBaseUrl

<script>
    var assetBaseUrl = "{{ asset('') }}";
</script>

用法:

$.backstretch([
    assetBaseUrl + "img/header-tt-big.jpg",
    assetBaseUrl + "img/header-soccer-big.jpg"
]

答案 1 :(得分:0)

如果你使用刀片,那么写下这样的后伸:

$.backstretch([
    "{{asset("img/header-tt-big.jpg")}}",
    "{{asset("img/header-soccer-big.jpg")}}"
]

答案 2 :(得分:0)

好的,我在脚本标记中添加了内联脚本。但我确实把它放在一个单独的文件中,如p1-inline.blade.php。所以我可以包括那一个。谢谢;)