Blade 中的 VueJS 模板未更新

Posted

技术标签:

【中文标题】Blade 中的 VueJS 模板未更新【英文标题】:VueJS Template Within Blade not Updated 【发布时间】:2021-05-26 08:42:33 【问题描述】:

Vue 版本:2.6 Laravel 版本:5.4

我在 laravel 刀片文件(laravel 混合)中有带有 :disabled 标志的 VueJS DOM,主要数据包含,图像对象如下代码:

data() 
  return 
    images: 
  

那么下面是一段按钮源代码:

<button :disabled="!images.pict0" @click="showPict('pict0')">
 Show Image
</button>

通信:异步

问题: 当异步数据到来时,这些按钮仍然处于禁用状态,即使观看图像对象数据已更改但这些按钮仍处于禁用状态。

解决步骤已尝试但失败:

用 Vue.set 设置图像对象,我的假设可能是由于 vue 中的对象反应性 + 结合 this.$forceUpdate() 添加布尔标志,希望数据来的时候布尔值设置为false,然后按钮启用, 在这些按钮周围添加&lt;template&gt;&lt;/template&gt;标签

希望得到解决,谢谢

【问题讨论】:

你能告诉我在成功检索数据后完整的images: 数据吗? 它包含带有 uri 字符串值 ex 的键。 pict0: "***.com/logo.jpg" 【参考方案1】:

您应该创建逻辑来操作按钮元素 (DOM)。

isDisabled() 
 // the conditions to make your button unable/disable

*或者使用 $refs 在 isDisabled() 中设置按钮值

ex 内部函数:

this.$refs.imagesBtn.disable = true/false

【讨论】:

感谢您的回答,启用/禁用取决于 pict0 的 uri,我会尝试以上两种方式,仍然无效。【参考方案2】:

#已更新

如果是由于其他部分的错误引起的,就会出现问题。我检测到何时数据尚未获取,我在某个组件上发生事件,然后我尝试单击它以指示渲染仍在运行,但是当数据获取并触发错误时,我单击的事件已停止。

感谢您的回答Ihsan Fajar Ramadhan & Argo Raden

【讨论】:

以上是关于Blade 中的 VueJS 模板未更新的主要内容,如果未能解决你的问题,请参考以下文章

使用 Blade/Mustache 模板混合 Laravel 和 Vue.Js

带有 Vue js 组件和 Googlebot 的 Laravel Blade 模板

路由器视图未加载内容,无法安装模板

在 Laravel Blade 中转义 VueJS 数据绑定语法?

将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用

如何在 Blade 模板中全局使用变量