Я не думаю, что вы можете рассчитывать на изменение состояния модели во время v-for, но, возможно, кто-то с некоторыми реальными изменениями vue.js может знать, как это можно сделать.
Если мне нужно использовать вычисляемые методы, как я могу реорганизовать мой код для успеха?
Одна вещь, которую вы могли бы сделать, это получить индекс от v-for следующим образом:
<div v-for="(element, index) in elementsList" v-bind:key="element.model">
Затем просто передайте index
в ваши вычисления, чтобы вам не нужно было полагаться на изменение состояния во время работы v-for.
Таким образом, вместо обновления x
и y
в цикле v-for вычислите, что x
и y
будут из индекса.
похоже, что y
никогда не меняется, поэтому вы можете обратиться к this.y
.
Для x
оно увеличивается каждый раз на 100, так что вы можете иметь метод для вычисления того, каким будет x:
methods: {
computeX(index) {
return this.x + 100 * index;
}
}
Затем используйте this.x1(index)
вместо this.x
в ваших методах getConfigRect и getConfigLine:
getConfigRect: function(index) {
return {
x: this.x1(index + 1),
y: this.y,
width: 20,
height: 20,
fill: 'white',
stroke: '#016FBF',
strokeWidth: 2,
offset: 10
}
},
getConfigLine: function(index) {
return {
points: [this.computeX(index + 1), this.y, this.computeX(index), this.nextY],
stroke: 'red',
strokeWidth: 15,
offset: 20
}
},
Возьмите это в качестве примера (ни в коем случае я не могу проверить это за разумное количество времени). Это должно дать вам представление.