javascript - 嵌套循环中的Vue数据(this.numberOfBars)超出范围
问题描述
我对 vue 很陌生,无法解决这个问题。在谷歌上花了几个小时没有任何运气。一旦我添加父外观(3 中的 j)this.numberOfBars
就超出了范围。不幸的是,在这个一次性的快速项目中,我根本不知道我不知道什么。谁能帮助我做错什么?
const app = new Vue({
el: '#app',
methods: {
bars() {
const bars = []
for (let i = 0; i < this.numberOfBars; i++) {
bars.push(Math.sqrt(this.numberOfBars * this.numberOfBars - i * i))
}
return bars
},
},
data() {
return {
scale: 2,
numberOfBars: 30,
}
},
})
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<div style="clear: left" v-for="j in 3">
<div v-for="(y, i) in bars()" :key="i" :style="{ width: scale * j, height: (numberOfBars * j) * scale, float: 'left', borderTop: (y * scale) + 'px solid blue' }">
</div>
PI = {{ bars().reduce((a, b) => a+(4*b)/Math.pow(this.numberOfBars * j, 2), 0) }}
</div>
</div>
解决方案
在您的模板中,您不需要this
:
const app = new Vue({
el: '#app',
methods: {
bars() {
const bars = []
for (let i = 0; i < this.numberOfBars; i++) {
bars.push(Math.sqrt(this.numberOfBars * this.numberOfBars - i * i))
}
return bars
},
},
data() {
return {
scale: 2,
numberOfBars: 30,
}
},
})
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<div style="clear: left" v-for="j in 3">
<div v-for="(y, i) in bars()" :key="i" :style="{ width: scale * j + 'px', height: (numberOfBars * j) * scale + 'px', float: 'left', borderTop: (y * scale) + 'px solid blue' }">
</div>
PI = {{ bars().reduce((a, b) => a+(4*b)/Math.pow(numberOfBars * j, 2), 0) }}
<!-- remove this before numberOfBars -->
</div>
</div>
推荐阅读
- c# - Deedle Frame的计算性能明显慢于Series?
- .net - 如何使用 C# iText7 在 PDF 生成中创建页眉
- wordpress - 如何在更改自定义帖子类型 slug 后使用 .htaccess 进行 301 重定向
- java - 如何以多线程方式提高使用 OrientDB 的性能?
- mysql - Mysql group_concat 与 in() 函数
- python - BeautifulSoup 查找 - 从感兴趣的块中排除嵌套标签
- jquery - 使用最后一次单击仅显示一个弹出窗口
- windows - 使用智能卡或生物识别设备通过 Active Directory 进行身份验证
- azure - 定期自动生成 Azure Batch AI 作业
- sql - Oracle SQL 删除 4 个字段中 2 个的重复项