第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Vue 觀察兩個鏈接的輸入字段,僅供用戶輸入

Vue 觀察兩個鏈接的輸入字段,僅供用戶輸入

回首憶惘然 2023-02-24 10:44:14
我有兩個輸入字段,想法是兩者都可以改變另一個的值。如果在 level 字段中輸入 1 - 200 的值,Vue 會查找該級別并返回該級別的點數(shù)并將它們輸入到 points 字段中。但我也希望發(fā)生相反的情況,因此如果用戶在點字段中輸入一定數(shù)量的點,Vue 會查找這些點并返回與該點數(shù)關(guān)聯(lián)的級別。這是可行的,除了 Vue 會進行雙重計算,因為它正在監(jiān)視兩個字段,所以如果我在點字段中輸入 300,它會正確返回級別 4,但 Vue 會檢測到級別字段中的變化,然后將點更改為 250。我只希望 Vue 檢測用戶何時更改字段,而不是在更改字段后重新計算。我希望這是有道理的,這很難解釋。從 axios 請求返回的數(shù)據(jù)示例:-[    {"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;            },
查看完整描述

1 回答

?
楊__羊羊

TA貢獻1943條經(jīng)驗 獲得超7個贊

在這種情況下,您正在尋找change事件,該事件將在用戶更改輸入值時專門激活。

當(dāng)用戶提交對元素的更改時,將為<input>、<select>和元素觸發(fā) change 事件。與事件不同,事件不一定會在元素的.<textarea>valueinputchangevalue

這意味著無論何時用戶更改任一輸入中的值,change事件都會觸發(fā),觸發(fā)關(guān)聯(lián)的方法并更新另一個框。這在沒有任何干擾的情況下發(fā)生,因為另一個輸入在其值以編程方式更新時不會觸發(fā)change事件(與跟蹤所有值更改的觀察者不同),因此不會觸發(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>


查看完整回答
反對 回復(fù) 2023-02-24
  • 1 回答
  • 0 關(guān)注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號