我有两个输入字段,想法是两者都可以改变另一个的值。
如果在 level 字段中输入 1 - 200 的值,Vue 会查找该级别并返回该级别的点数并将它们输入到 points 字段中。
但我也希望发生相反的情况,因此如果用户在点字段中输入一定数量的点,Vue 会查找这些点并返回与该点数关联的级别。
这是可行的,除了 Vue 会进行双重计算,因为它正在监视两个字段,所以如果我在点字段中输入 300,它会正确返回级别 4,但 Vue 会检测到级别字段中的变化,然后将点更改为 250。
我只希望 Vue 检测用户何时更改字段,而不是在更改字段后重新计算。
我希望这是有道理的,这很难解释。
从 axios 请求返回的数据示例:-
[
{"level":1,"points":0},
{"level":2,"points":72},
{"level":3,"points":175},
{"level":4,"points":250},
{"level":5,"points":401,}
]
一个简化的 vue 组件来演示我的工作:-
<template>
<div>
<div class="card-body">
<form>
<div class="row">
<div class="col">
<div class="form-group">
<input type="text" v-model="currentLevel" class="form-control">
</div>
<div class="form-group">
<input type="text" v-model="currentPoints" class="form-control">
</div>
</div>
</div>
</form>
</div>
</div>
</template>
<script>
export default {
data() {
return {
currentLevel: 1,
currentPoints: 0,
pointsTable: []
}
},
mounted() {
axios.get('/api/points').then(this.fetchPointsTable);
},
methods: {
fetchPointsTable({data}) {
this.pointsTable = data;
}
},
watch: {
currentLevel: function() {
const result = this.pointsTable.find( ({ level }) => level === parseInt(this.currentLevel) );
this.currentPoints = result.experience;
},
杨__羊羊
相关分类