【发布时间】:2019-03-08 21:33:40
【问题描述】:
我正在编写一个在客户端工作的简单工具。基本上,用户输入一个文件,按下一个按钮来启动它,它会处理它(大约需要 10-15 秒),然后它会将修改后的文件返回。
不幸的是,当他们按下按钮启动方法时,DOM 直到方法完成才更新,所以直到全部完成都没有反馈,这很令人沮丧。
在模板部分,我有:
<p v-if="processingStatus==1">Processing data...</p>
“processingStatus”变量默认设置为 0。
在“processData”方法中,当按钮被按下时调用,它以
开头this.processingStatus = 1
然后继续处理数据。
不幸的是,“处理数据...”标签在方法完成之前不会显示。如何在方法运行时强制 VueJS 渲染 DOM?
【问题讨论】:
-
processData是做什么的? -
它遍历一个巨大的数组,在另一个数组中搜索该数组中的元素,如果找到它们就删除它们。都是客户端。
-
我的猜测是您正在更改
processingStatus内if的值,它具有不同的范围。如果我在函数内部但在任何 if 语句之外为this创建一个变量,它对我来说很好。供您参考jsfiddle.net/gilango/j0u14675 -
啊,我没有在 setTimeout 函数中运行。这样做解决了它,谢谢!
标签: javascript vue.js vuejs2