gpt4 book ai didi

javascript - 需要 Vue 的帮助 - BMI 计算器

转载 作者:行者123 更新时间:2023-12-03 06:45:13 25 4
gpt4 key购买 nike

我正在使用 Vue 学习 Webdev。在我的项目中,我构建了一个组件来计算一个人的 BMI。我用 bootstrap-vue 创建了一个表格得到我需要的值。现在我需要 JavaScript 部分的帮助。我只是不知道如何纠正它。

<template>
<div class="bmi-calc">

<b-card title="BMI Calculator" img-src="https://picsum.photos/600/300/?image=25" img-alt="Image" img-top tag="article" style="max-width: 20rem;" class="mb-2">

<b-form @submit="onSubmit" v-if="show">
<!-- Height -->
<b-form-group id="input-group-height" label="height" label-for="input-height" description="Height in cm">
<b-form-input id="input-height" v-model="form.height" type="height"></b-form-input>
</b-form-group>
<!-- Weight -->
<b-form-group id="input-group-weight" label="weight" label-for="input-weight" description="Weight in kg">
<b-form-input id="input-weight" v-model="form.weight" type="weight"></b-form-input>
</b-form-group>
</b-form>

<b-button type="submit" variant="primary">Submit</b-button>
<div>Solution is: <strong>{{ solution }}</strong></div>

</b-card>
</div>
</template>


<script>
export default {
data () {
return {
form: {
height: '',
weight: ''
},
show: true
}
},
methods: {
onSubmit (evt) {
evt.preventDefault()
var solution = null
solution = this.weight / (this.height) ^ 2
},
onReset (evt) {
evt.preventDefault()
// Reset our form values
this.form.height = ''
this.form.weight = ''
// Trick to reset/clear native browser form validation state
this.show = false
this.$nextTick(() => {
this.show = true
})
},
}
}

</script>
我用过的公式: 1

最佳答案

几个问题:

  • 提交按钮应该在表单内以触发 submit -事件正确:

  • <b-form>
    <b-form-group>...</b-form-group>

    <b-button type="submit">Submit</b-button>
    </b-form>
  • 模板引用solution , 但这只是 onSubmit() 中的一个局部变量.要使其可用于渲染,请将其初始化为 data() 中的 Prop 。 , 如下所示。稍后您将在 onSubmit() 中设置它通过使用 this.solution = /* new value */ .

  • export default {
    data() {
    return {
    //...
    solution: 0,
    }
    }
    }
  • onSubmit()this.weightthis.height ,但这些值实际上存储在 this.form 下,所以它们应该是 this.form.weightthis.form.height , 分别。
  • BMI 计算未使用正确的语法对数字进行平方。您可以使用 Math.pow() ,或者只是将其与自身相乘:

  • export default {
    methods: {
    onSubmit() {
    this.solution = this.form.weight / Math.pow(this.form.height, 2)
    // OR
    this.solution = this.form.weight / (this.form.height * this.form.height)
    }
    }
    }
  • <b-form-input> s 绑定(bind)到 form.heightform.weight , 但目前这些都是字符串,会导致 BMI 计算出错,需要数字。目前,输入类型被错误地设置为 type="height"type="weight" , 但应该是 type="number" .此外,当使用 v-model对于数字,请务必使用 .number modifier以便将值更新为正确的类型:

  • <b-form-input v-model.number="form.weight" type="number">
    <b-form-input v-model.number="form.height" type="number">
    Edit Binding to number inputs

    关于javascript - 需要 Vue 的帮助 - BMI 计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63269089/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com