使用 v-model 实现计算器的案例|学习笔记

简介: 快速学习使用 v-model 实现计算器的案例

开发者学堂课程【Vue.js 入门与实战使用 v-model 实现计算器的案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/586/detail/8136


使用v-model实现计算器的案例


目录

一、使用 v-model 实现计算器

二、代码

 

一、使用 v-model 实现计算器

创建界面,第一步 input,创建数据绑定 n1并使用 v-model,接下来创建 select框,option 加减乘除4个选项,再创建一个 input,创建数据绑定 n2并使用 v-model,再创建一 个 button 和 result。刷新浏览,可以看到这三个框绑定了 n1、n2、result。

首先要在 data 定义这三个属性:data: {n1:0,n2:0,result:0}

1666936917012.jpg 

image.png可以看到算术符号也属于表单元素,添加操作符 option(这里简写为 opt)v-model 绑定到 data,默认为加号。

为了使等号有一个计算的方法,需要增加触发 @click="calc"的方法,在 data 有一个平级 methods,添加 switch(this.opt){case ‘+’:},由于 n1 或者 n2 有可能是字符串,所以添加

this.result = parseInt(this.n1) + parseInt(this.n2)

这样应用逻辑就完成了,只要点击就会触发 calc 计算,计算完成之后就会重新给result 赋值。那么 model 被修改了,所以 model 元素也被修改了,vm 会自动同步到页面中去。

刷新浏览可以查看计算.

1666936935240.jpg

1666936944162.jpg

有个投机取巧的方式:有个函数叫 eval,它能把字符串解析执行,然后拿到执行结果。

添加var codeStr = ‘parseInt(this.n1)’ + this.opt + ‘parseInt(this.n2)’这样得到字符串代码,然后把这个字符串代码用 eval 解析,就会执行。

解析的结果就反回 result。

1666936894424.jpg

image.png注意:

这个方法是投机取巧的,在将来项目里面发现其他方法都很麻烦时可以用一下,尽量少用。

 

二、代码

<head>

<meta charset="UPr-8">

<meta name="viewport" content="width=device-width,initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

<script src=" . /lib/vue-2.4.0.js"></script>

</head>

<body>

<div id=”app”>

<input type=”text” v-model=”n1”>

<select v-model=”opt”>

<option value="+">+</option>

<option value="-">-</ option>

<option value="*">*</ option>

<option value="/">/</option>

</select>

<input type="text" v-model="n2">

<input type="button" value="=" @click=”calc”>

imput type="text" v-model="result">

</div>

<script>

//创建vue 实例,得到ViewMode1

var vm= new vue ({

el: ‘#app’,

data: {

n1:0,

n2:0,

result:0,

opt: ‘+’

},

methods: {

calc(){ //计算器算数的方法

//逻辑:

/* switch(this.opt){

case ‘+’:

this.result = parseInt(this.n1) + parseInt(this.n2)

break;

case ‘-’:

this.result = parseInt(this.n1) - parseInt(this.n2)

break;

case ‘*’:

this.result = parseInt(this.n1) * parseInt(this.n2)

break;

case ‘/’:

this.result = parseInt(this.n1) / parseInt(this.n2)

 break;

} */

//注意:这是投机取巧的方式,正式开发中,尽量少用

var codeStr = ‘parseInt(this.n1)’ + this.opt + ‘parseInt(this.n2)’

this.result = eval(codeStr)

}

}

});

</script>

</body>

相关文章
|
虚拟化
安装VMware提示无法访问网络位置*:\VMware\......
安装VMware提示无法访问网络位置*:\VMware\......
1273 0
|
Java 应用服务中间件 开发工具
如何使用IDEA创建JSP页面
如何使用IDEA创建JSP页面
1569 0
|
11月前
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
3339 15
|
人工智能 安全 搜索推荐
单片机毕业设计|基于stm32智能快递箱设计
随在当今的社会,网上购物以及线下获取快递己经成为日常生活中很重要的一个组成部分,电子商务的发展也带来了快递业的繁荣。这对快递业而言,是一个巨大的发展机遇,同时也是一个不可忽视的挑战。当前,快件运输的安全性越来越受到大家的重视,对快件的服务要求也越来越高。但就目前的快递行业来说,也面临着这样那样的问题,比较经常遇到送快递的到了,业务不在家,取快递时间对不上等。在此基础上,提出了一种以STM32为核心的智能化快递柜。本快递柜的主要功能有,指纹解锁功能,按键功能,警报功能,继电器柜门开锁功能,验证码功能,主要设计加入了指纹解锁功能。本系统以STM32F103为主控芯片,配置了指纹传感、4*4矩阵键盘
583 0
ModuleNotFoundError: No module named ‘fake_useragent‘
这篇文章提供了解决`ModuleNotFoundError: No module named 'fake_useragent'`错误的多种方法,包括重新运行安装命令、根据Python版本号指定安装、更新模块到最新版本以及使用whl文件安装。
ModuleNotFoundError: No module named ‘fake_useragent‘
|
监控 安全 网络协议
DHCP 协议及其优缺点
【8月更文挑战第20天】
1257 0
|
安全 JavaScript Java
社区老人健康信息管理系统|基于springboot社区老人健康信息管理系统设计与实现(源码+数据库+文档)
社区老人健康信息管理系统|基于springboot社区老人健康信息管理系统设计与实现(源码+数据库+文档)
392 1
|
存储 Python
链表中删除节点
链表中删除节点
|
数据采集 存储 JavaScript
(2024)豆瓣电影TOP250爬虫详细讲解和代码
这是一个关于如何用Python爬取2024年豆瓣电影Top250的详细教程。教程涵盖了生成分页URL列表和解析页面以获取电影信息的函数。`getAllPageUrl()` 生成前10页的链接,而`getMoiveListByUrl()` 使用PyQuery解析HTML,提取电影标题、封面、评价数和评分。代码示例展示了测试这些函数的方法,输出包括电影详情的字典列表。
1188 3
|
存储 前端开发 JavaScript
[初学者必看]JavaScript 简单实际案例练习,锻炼代码逻辑思维
【6月更文挑战第2天】这是一个前端小项目合集,包括图片轮播器、动态列表、模态框、表单验证等14个项目,旨在帮助初学者提升编码技能和实战经验。每个项目提供关键提示,如使用HTML、CSS和JavaScript实现不同功能,如事件监听、动画效果和数据处理。通过这些项目,学习者可以锻炼前端基础并增强实际操作能力。
524 2