标价为1999元的手机,使用 按钮的形式,通过for循环手机的版本名字,版本价格,颜色,颜色价格;手机的版本id,版本名字,版本价格为数组1;颜色id,颜色类型,颜色价格为数组2;当选择手机版本时和颜色类型时,计算总价格。价格的计算方法为手机价格加上选择的版本价格加上选择的颜色类型,默认选中第一个,用Vue写
时间: 2024-03-09 17:44:33 浏览: 60
[AIUI]手机版 4.2.0 高级版 [qu_app] [价值999元]
3星 · 编辑精心推荐
好的,我来为您解答这个问题。首先,您需要在Vue中定义一个data对象,包含以下属性:
```
data() {
return {
phoneName: '手机名称',
phonePrice: 1999,
versions: [
{id: 1, name: '版本1', price: 0},
{id: 2, name: '版本2', price: 100},
{id: 3, name: '版本3', price: 200}
],
colors: [
{id: 1, type: '黑色', price: 0},
{id: 2, type: '白色', price: 50},
{id: 3, type: '金色', price: 100}
],
selectedVersion: 1,
selectedColor: 1,
totalPrice: 0
}
}
```
其中,phoneName和phonePrice表示手机的名称和价格,versions和colors分别表示版本和颜色的列表,每个元素包含id、name/type和price属性。selectedVersion和selectedColor表示当前选择的版本和颜色的id,默认选中第一个。totalPrice表示计算出来的总价格,初始值为0。
然后,您需要在模板中使用v-for指令,循环展示版本和颜色的选项,并使用v-model指令绑定selectedVersion和selectedColor的值:
```
<div>
<p>手机名称:{{phoneName}}</p>
<p>手机价格:{{phonePrice}}元</p>
<p>选择版本:</p>
<ul>
<li v-for="version in versions" :key="version.id">
<input type="radio" :id="'version'+version.id" :value="version.id" v-model="selectedVersion">
<label :for="'version'+version.id">{{version.name}} +{{version.price}}元</label>
</li>
</ul>
<p>选择颜色:</p>
<ul>
<li v-for="color in colors" :key="color.id">
<input type="radio" :id="'color'+color.id" :value="color.id" v-model="selectedColor">
<label :for="'color'+color.id">{{color.type}} +{{color.price}}元</label>
</li>
</ul>
<p>总价格:{{totalPrice}}元</p>
</div>
```
最后,您需要在Vue中定义一个计算属性,根据选择的版本和颜色计算出总价格:
```
computed: {
totalPrice() {
const versionPrice = this.versions.find(v => v.id === this.selectedVersion).price;
const colorPrice = this.colors.find(c => c.id === this.selectedColor).price;
return this.phonePrice + versionPrice + colorPrice;
}
}
```
这个计算属性会根据选择的版本和颜色,从versions和colors数组中找到对应的元素,并计算出总价格,返回给模板中的{{totalPrice}}显示出来。
完整的代码如下:
```
<template>
<div>
<p>手机名称:{{phoneName}}</p>
<p>手机价格:{{phonePrice}}元</p>
<p>选择版本:</p>
<ul>
<li v-for="version in versions" :key="version.id">
<input type="radio" :id="'version'+version.id" :value="version.id" v-model="selectedVersion">
<label :for="'version'+version.id">{{version.name}} +{{version.price}}元</label>
</li>
</ul>
<p>选择颜色:</p>
<ul>
<li v-for="color in colors" :key="color.id">
<input type="radio" :id="'color'+color.id" :value="color.id" v-model="selectedColor">
<label :for="'color'+color.id">{{color.type}} +{{color.price}}元</label>
</li>
</ul>
<p>总价格:{{totalPrice}}元</p>
</div>
</template>
<script>
export default {
name: 'Phone',
data() {
return {
phoneName: '手机名称',
phonePrice: 1999,
versions: [
{id: 1, name: '版本1', price: 0},
{id: 2, name: '版本2', price: 100},
{id: 3, name: '版本3', price: 200}
],
colors: [
{id: 1, type: '黑色', price: 0},
{id: 2, type: '白色', price: 50},
{id: 3, type: '金色', price: 100}
],
selectedVersion: 1,
selectedColor: 1,
totalPrice: 0
}
},
computed: {
totalPrice() {
const versionPrice = this.versions.find(v => v.id === this.selectedVersion).price;
const colorPrice = this.colors.find(c => c.id === this.selectedColor).price;
return this.phonePrice + versionPrice + colorPrice;
}
}
}
</script>
```
阅读全文