我正在用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>
我使用过的公式:
一些问题:
submit
正确-event:<b-form>
<b-form-group>...</b-form-group>
<b-button type="submit">Submit</b-button>
</b-form>
solution
,但这只是内部的局部变量onSubmit()
。要使其可用于渲染,请将其初始化为来自的道具data()
,如下所示。稍后将onSubmit()
使用进行设置this.solution = /* new value */
。export default {
data() {
return {
//...
solution: 0,
}
}
}
onSubmit()
引用this.weight
和this.height
,但是这些值实际上存储在之下this.form
,因此它们应该分别是this.form.weight
和this.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的必然form.height
和form.weight
,但这些都是当前字符串,这将导致在BMI计算,这需要数错误。当前,输入类型错误地设置为type="height"
和type="weight"
,但是应该设置为type="number"
。另外,当v-model
用于数字时,请确保使用.number
修饰符,以便将值更新为正确的类型:<b-form-input v-model.number="form.weight" type="number">
<b-form-input v-model.number="form.height" type="number">
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句