我想我在这里缺少 Vue JS 反应性的东西。
我的问题是,当我使用文件系统和 Adm-Zip 解压缩文件时,某些数据值没有更新。
这是一些伪代码来显示我的问题。
export default {
data () {
return {
unzipped: 0,
total: 0
}
},
methods: {
unzipFile (fileName) {
var that = this
let r = fs.createReadStream(fileName)
let w = fs.createWriteStream('archive.zip')
let i = 0
r.pipe(w).on('close', function () {
var zip = new AdmZip('archive.zip')
var zipEntries = zip.getEntries()
that.total = zipEntries.length // not updating
zipEntries.forEach(function (zipEntry) {
zip.extractEntryTo(zipEntry.entryName, dir + 'video', false, true)
i++
that.unzipped = i // not updating
})
})
// updates are made here
}
}
}
that.total
并且that.unzipped
在代码执行时不更新。
这是我显示进度的模板代码。
<template>
<div>
{{ unzipped }}/{{ total }}
</div>
</template>
任何帮助表示赞赏。
编辑 这是一个成功更新数据属性的测试方法。
testUpdate () {
var that = this
that.total = 100
setInterval(() => {
that.unzipped++
}, 1000)
}