1 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
在這種情況下,您正在尋找change
事件,該事件將在用戶更改輸入值時(shí)專門激活。
當(dāng)用戶提交對(duì)元素的更改時(shí),將為
<input>
、<select>
和元素觸發(fā) change 事件。與事件不同,事件不一定會(huì)在元素的.<textarea>
value
input
change
value
這意味著無(wú)論何時(shí)用戶更改任一輸入中的值,change
事件都會(huì)觸發(fā),觸發(fā)關(guān)聯(lián)的方法并更新另一個(gè)框。這在沒有任何干擾的情況下發(fā)生,因?yàn)榱硪粋€(gè)輸入在其值以編程方式更新時(shí)不會(huì)觸發(fā)change
事件(與跟蹤所有值更改的觀察者不同),因此不會(huì)觸發(fā)其關(guān)聯(lián)的方法。
你的例子的調(diào)整版本:
<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"?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @change="updateCurrentPoints"
? ? ? ? ? ? ? ? ? ? ? ? ? ? >
? ? ? ? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? ? ? ? ? <div class="form-group">
? ? ? ? ? ? ? ? ? ? ? ? ? ? <input
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? type="text"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? v-model="currentPoints"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? class="form-control"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @change="updateCurrentLevel"
? ? ? ? ? ? ? ? ? ? ? ? ? ? >
? ? ? ? ? ? ? ? ? ? ? ? </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;
? ? ? ? ? ? },
? ? ? ? ? ? updateCurrentPoints() { // contents of currentLevel watcher
? ? ? ? ? ? ? ? const result = this.pointsTable.find( ({ level }) => level === parseInt(this.currentLevel) );
? ? ? ? ? ? ? ? this.currentPoints = result.experience;
? ? ? ? ? ? },
? ? ? ? ? ? updateCurrentLevel() { // contents of currentPoints watcher
? ? ? ? ? ? ? ? var levels = [];
? ? ? ? ? ? ? ? var goal = this.currentXp;
? ? ? ? ? ? ? ? var closest = this.xpTable.reduce(function(prev, curr) {
? ? ? ? ? ? ? ? ? ? if (curr.points <= goal) {
? ? ? ? ? ? ? ? ? ? ? ? levels = curr.level;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? return Math.max(levels);
? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? this.currentLevel = closest;
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>
添加回答
舉報(bào)