vue小练习(网页汇率器)

一.重要的点:

1.数据绑定

select 里绑定 option 的 value 属性值

2.@change和 @click 的运用

动态展示及数据处理

3.不同类型数据之间的关联

对象数组和 Map


数据:

countryList:[
                { id: '1', key: 'CNY', name: 'CNY - 人民币'},
                { id: '2', key: 'USD', name: 'USD - 美元' },
                { id: '3', key: 'EUR', name: 'EUR - 欧元' },
                { id: '4', key: 'GBP', name: 'GBP - 英镑' },
                { id: '5', key: 'JPY', name: 'JPY - 日元' },
                { id: '6', key: 'HKD', name: 'HKD - 港币' },
                { id: '7', key: 'AUD', name: 'AUD - 澳元' },
                { id: '8', key: 'CAD', name: 'CAD - 加元' },
            ],
rates: new Map([
                ["CNY", 1],
                ["USD", 0.1503],
                ["EUR", 0.1266],
                ["GBP", 0.1144],
                ["JPY", 15.7243],
                ["HKD", 1.1646],
                ["AUD", 0.2115],
                ["CAD", 0.198],
            ],

二.效果

1.初始页面

大致轮廓如下:

 

 2.动态效果


在select的下拉框里选择的时候点击之后页面要动态响应

 

 

3.结果页面


输入兑换金额,点击查询计算,在下面显示计算结果

 

 三:分析


1.页面


整体比较简单,上中下三个 div,上面的 div 里就放一个文本就行;中间的 div 又分为三个小 div,每个 div 里一个文本加一个输入框;下面的 div 也分为三个小 div,如上所示。

2.逻辑


主要就是实现数据的获取,计算,展示:
两个数据关联的是对象数组的key和map里的key,但是两组数据需要的值不同。
这个 select 绑定的就是 option 的 value 属性的值,
所以把 option 的 value 换成对象数组里id,
可以通过id获得对象数组里的其他属性的值,
this.对象数组名[id].属性名 这样可以得到对象数组的key和name;
之后通过key获得map里的value值进行运算 this.map名.get(key)。

四.代码


css:
#fd-f {
    /*text-align: center;*/
    width: 100%;
    height: 100%;
}
 
#app {
    width: 500px;
    height: 415px;
    margin: auto;
    border: cornflowerblue 2px solid;
    border-radius: 8px;
}
 
#fd-h {
    width: 500px;
    height: 50px;
    font-size: 32px;
    background-color: cornflowerblue;
}
 
#fd-1 {
    width: 500px;
    height: 50px;
    margin: 10px auto;
    font-size: 20px;
}
 
#fd-1-s {
    height: 35px;
    width: 380px;
    border-radius: 8px;
}
 
#fd-2 {
    width: 500px;
    height: 50px;
    margin: 10px auto;
    font-size: 20px;
}
 
#fd-2-s {
    height: 35px;
    width: 380px;
    border-radius: 8px;
}
 
#fd-3 {
    width: 500px;
    height: 50px;
    margin: 10px auto;
    font-size: 20px;
}
 
#fd-3-i {
    height: 30px;
    width: 280px;
    border-radius: 8px;
}
 
#fd-3-b {
    width: 90px;
    height: 35px;
    background-color: cornflowerblue;
    font-size: 18px;
    border-radius: 8px;
}
 
#fd-x {
    border: none;
    border-top: 1px dashed blue;
    width: 480px;
}
 
#fd-4 {
    width: 500px;
    height: 80px;
}
 
#fd-4-w {
    color: cornflowerblue;
    font-size: 20px;
    font-weight: 400;
    line-height: 35px;
}
 
#fd-4-m {
    height: 100px;
    width: 490px;
    border: cornflowerblue 1px solid;
    border-radius: 10px;
    margin: 10px auto;
    text-align: center;
    font-size: 20px;
}
 
#fd-4-1 {
    line-height: 20px;
    text-align: center;
    font-size: 20px;
}
 
#fd-4-d {
    line-height: 10px;
    text-align: center;
    font-size: 18px;
    color: cornflowerblue;
}

vue和网页结构:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>汇率兑换</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<link rel="stylesheet" href="网页汇率.css">
<body>
<div id="fd-f">
<div id='app'>
    <div id='fd-h'>
        汇率查询转换器
    </div>
    <div id='fd-1'>
        持有货币:
        <!-- {{select}} -->
        <select id='fd-1-s' v-model="select1" @change="count" >
            <option v-for="c in countryList" :key="c.id" :value="c.id">
                {{c.name}}
            </option>
        </select>
    </div>
    <div id='fd-2'>
        目标货币:
        <select id='fd-2-s' v-model="select2" @change="count">
            <option v-for="c in countryList" :key="c.id" :value="c.id">
                {{c.name}}
            </option>
        </select>
    </div>
    <div id='fd-3'>
        兑换金额:
        <input id='fd-3-i' type="text" v-model="v" />
        <input id='fd-3-b' type="button" @click="count" value="查询计算">
    </div>
    <hr id='fd-x'>
    <div id='fd-4'>
        <div id='fd-4-w'>{{sn1}}兑换{{sn2}}:</div>
        <div id='fd-4-m'>
            <p id='fd-4-1'>{{v}} {{s1}} = {{result}}{{s2}}</p>
            <hr id='fd-4-r'>
            <div id=fd-4-d v-model='r' >
              <p>当前汇率:{{r}}</p>
            </div>
        </div>
    </div>
</div>
</div>
<!-- 两个数据关联的是对象数组的key和map里的key,但是两组数据需要的值不同。
这个select绑定的就是option的value属性的值,所以把option的value换成对象数组里的id,
可以通过id获得对象数组里的其他属性的值(this.对象数组名[id].属性名)这样可以得到对象数组的key和name;
之后通过key获得map里的value值进行运算(this.map名.get(key))-->
<script src="/vue.js"></script>
<script>
    var app=new Vue({
        el:'#app',
        data:{
            select1:'1',//countryList中的id
            select2:'3',
            s1:'CNY',//countryList中的key
            s2:'EUR',
            sn1:'人民币',//countryList中的name
            sn2:'欧元',
            v:'',
            result:'',
            r:'',
            key:'',
            countryList:[
                { id: '1', key: 'CNY', name: 'CNY - 人民币'},
                { id: '2', key: 'USD', name: 'USD - 美元' },
                { id: '3', key: 'EUR', name: 'EUR - 欧元' },
                { id: '4', key: 'GBP', name: 'GBP - 英镑' },
                { id: '5', key: 'JPY', name: 'JPY - 日元' },
                { id: '6', key: 'HKD', name: 'HKD - 港币' },
                { id: '7', key: 'AUD', name: 'AUD - 澳元' },
                { id: '8', key: 'CAD', name: 'CAD - 加元' },
            ],
            rates: new Map([
                ["CNY", 1],
                ["USD", 0.1503],
                ["EUR", 0.1266],
                ["GBP", 0.1144],
                ["JPY", 15.7243],
                ["HKD", 1.1646],
                ["AUD", 0.2115],
                ["CAD", 0.198],
            ]),
 
        },
        methods:{
            count(){
                this.s1=this.countryList[this.select1-1].key
                this.s2=this.countryList[this.select2-1].key
                this.sn1=this.countryList[this.select1-1].name.substring(6)
                this.sn2=this.countryList[this.select2-1].name.substring(6)
                this.r=this.rates.get(this.s2)/this.rates.get(this.s1)
                this.result=(this.v*this.r).toFixed(2)
            }
        },
    })
</script>
 
</body>
</html>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
初学Vue的案例练习题可以从以下几个方面进行练习: 1. 组件的基本使用:创建一个Vue组件,在模板中展示一些静态文本或数据,并在组件中定义一些基本的数据和方法。 2. 数据绑定:练习使用v-model指令和数据绑定来实现双向数据绑定,例如创建一个表单,实时显示输入框中的内容。 3. 列表渲染:使用v-for指令来循环渲染一个数组或对象的数据,并在模板中展示列表数据。 4. 条件渲染:使用v-if和v-else指令来根据条件动态地展示或隐藏一些元素。 5. 事件处理:练习使用v-on指令来监听DOM事件,并在事件处理函数中修改数据或执行其他逻辑。 6. 组件通信:练习使用props和emit来实现父子组件之间的数据传递和通信。 7. 生命周期:了解Vue的生命周期钩子函数,练习在创建、更新和销毁组件时执行相应的逻辑。 8. 路由和导航:学习使用Vue Router插件来实现前端路由和导航功能,创建不同路径下的页面。 9. 状态管理:学习使用Vuex插件来实现全局状态管理,练习在不同组件之间共享和修改状态。 以上是初学Vue时可以练习的一些案例题目,你可以根据自己的学习进度和需求选择适合自己的练习项目。如果需要更多详细的案例和代码实例,你可以参考中提供的学习资料和中的项目案例地址。另外,你还可以在Vue官方文档和在线教程中找到更多的实例和练习题目进行学习。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3+TypeScript从入门到进阶(三)——Vue3基础知识点(上)——附沿途学习案例及项目实战代码](https://blog.csdn.net/wuyxinu/article/details/124639124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值