如何在 vuejs 指令中使用 Laravel Blade 语法?

Posted

技术标签:

【中文标题】如何在 vuejs 指令中使用 Laravel Blade 语法?【英文标题】:How to use Laravel Blade syntax inside vuejs directives? 【发布时间】:2021-10-13 22:52:19 【问题描述】:

我刚开始学习 vuejs,我正在尝试将它整合到我的 laravel 项目中,但我遇到了问题。我的 vue 对象中有一组图像路径,如下所示:

 new Vue(
        el: '#app',

        data: 
            images: [
                "img/image-1.png",
                "img/image-2.png",
                "img/image-3.png"   
            ]
        
    );

我想使用 Laravel 的asset() 帮助器遍历所有图像并在我的页面中显示它们。我试过这样使用它:

<img v-for="image in images" :src=" asset('image') ">

但它不识别 vue 指令:

[Vue warn]: Error compiling template:

invalid expression: Unexpected token ':' in

http://127.0.0.1:8000/image

Raw expression: :src="http://127.0.0.1:8000/image"

【问题讨论】:

试试不带':'的src 那只是忽略vue变量,路径变成src="127.0.0.1:8000/image" 你不能使用资产助手来处理 vue 数据,因为 laravel 先渲染而 vue 在客户端渲染,所以这是不可能的。相反,您可以尝试使用基本网址 :src="' url()-&gt;to('/') /'+image" 【参考方案1】:

我认为您需要尝试像以下方式迭代循环:

<div v-for="image in images">
    <img :src="image" class="" />
</div>

assets helper 需要以下代码:

<img  src=""  :src="' asset('yourfilepath') ' +  '/' + image">

希望对你有帮助

【讨论】:

这确实有效,但有人告诉我使用asset() 助手。我会把它标记为正确的,但你可能知道何时以及为什么应该使用 laravel 助手?文档没有对此进行扩展。【参考方案2】:

您可以转义 VueJS 数据绑定语法,以便同时使用 Blade 和 Vue:

这里是答案,更多详情请阅读:https://***.com/a/37934125/9453309

<div>
  <!-- html rendering with VueJS -->
  @ selectedQuestionDesc  
  <!-- Data binding with VueJS -->
  @ selectedQuestionDesc 
</div>
<div>
  <!-- HTML with Laravel Blade -->
  !! $selectedQuestionDesc !!
  <!-- Variable binding with Laravel Blade -->
   $selectedQuestionDesc  
</div>

【讨论】:

正如我想象的那样,你想让我做&lt;img v-for="image in images" src=" asset('@ image ') "&gt;,但这会引发错误Unclosed '(' does not match '' @Nutenn 不行,你需要用双感叹号&lt;img v-for="image in images" :src="!! asset('image') !!"&gt; 这只会引发类似的错误:[Vue warn]: Error compiling template: invalid expression: Unexpected token '' in http://127.0.0.1:8000/image Raw expression: :src="http://127.0.0.1:8000/image" @Nutenn 糟糕,我多放了一个 ,删除一个再试一次,应该是 !! !!

以上是关于如何在 vuejs 指令中使用 Laravel Blade 语法?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel Blade 中使用 Vuejs

如何通过 VueJS 在 Laravel 中使用 Bootstrap 4 图标

如何使用 vuejs 在 laravel 刀片中显示验证错误

使用 laravel 后端 api 在 vuejs 中搜索

如何在 laravel 项目中的 VueJS 上使用 Font Awesome 5

我如何在 laravel Blade 中使用 vuejs 组件?