【发布时间】:2018-11-06 16:01:20
【问题描述】:
在我的 vue.js 应用程序中,我想绘制几个矩形(数量取决于数组长度)和它们之间的线条。为此,我有 4 个数据 x、y、nextX、netxY,它们将在绘图过程中更新。
这是我的数据
data () {
return {
x: 25,
y: 25,
nextX: null,
nextY: null,
elemntList: []
}
}
这是我的方法
<div v-for="element in elementsList" v-bind:key="element.model">
<v-rect :config="getConfigRect()"></v-rect>
{{ $calculNextPosition(element.model) }}
<v-line :config="getConfigLine()"></v-line>
{{ $setOriginOnNextPosition() }}
</div>
getConfigRect 必须有 x 和 y 参数
要画一条线,我需要绘制下一个矩形的未来位置 所以,getConfig Line 必须有 x 和 y 参数(起点)和 nextX 和 nextY 参数(终点)。
methods: {
$calculNextPosition: function() {
this.nextX = this.x + 100;
this.nextY = this.y;
},
$setOriginOnNextPosition: function() {
this.x = this.nextX;
this.y = this.nextY;
this.nextX = null;
this.nextY = null;
},
getConfigRect: function() {
return {
x: this.x,
y: this.y,
width: 20,
height: 20,
fill: 'white',
stroke: '#016FBF',
strokeWidth: 2,
offset: 10
}
},
getConfigLine: function() {
return {
points: [this.x, this.y, this.nextX, this.nextY],
stroke: 'red',
strokeWidth: 15,
offset: 20
}
},
}
这个简单的代码准备下一个比前一个左100像素的矩形。但是我的 v-for 循环被调用为无限。问题是由于 $setOriginOnNextPosition 函数造成的。如果我删除该方法,则循环只会被调用一次。
为什么我的 v-for 循环被一次又一次地调用? 如果我必须使用计算方法,我该如何重构我的代码才能成功?
编辑:也许重置我的 x 和 y 数据重新加载整个视图并再次调用循环...
【问题讨论】:
-
总是被调用是什么意思?将为
elementsList中的每个元素调用这些方法。我不清楚您所看到的内容,但您似乎正在尝试在不应该存在的 html 中执行计算。我建议完全在 javascript 中对元素列表进行任何配置,然后让 html 简单地显示已经计算的内容。 -
感谢您的回答。我为我的问题增加了精度。这是我的 v-for 循环,由于 setOriginOnNextPosition 方法而被无限调用
-
getConfigLine 有什么副作用?也许包括那个代码?
-
在calculNextPosition(...?)中你在哪里使用element.model
-
我没有使用我的 element.model,我忘了删除它。我更新了我的帖子
标签: javascript vuejs2