首页 > 其他分享 >VUE分别使用普通方法、计算属性、监听器完成简易计算器

VUE分别使用普通方法、计算属性、监听器完成简易计算器

时间:2023-04-02 16:01:16浏览次数:51  
标签:function VUE num1 num2 selected result 监听器 计算器 属性

计算器功能:

1.加减乘除模可以随意切换
使用表单元素< seclect >

2.当输入框中数字改变时实时得出运算结果
方法1:v-model绑定input框的值,绑定input键盘按下和鼠标点击时触发自定义方法getResult,该方法用来计算表达式的值。
方法2:使用computed计算属性
方法3:使用watch侦听属性

3.可以使用上下按钮调节数字大小
使用input 属性 type=“number”

4.结果框禁止输入
input添加事件οnfοcus=“this.blur()”

一、普通方法

通过methods中自定义方法,然后在input表单上通过v-on绑定keyup键盘事件,实现实时更新计算结果的功能。

 1 <!DOCTYPE html1>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title></title>
 6         <script type="text/javascript" src="js/vue.js"></script>
 7     </head>
 8     <body>
 9         <div id="app">
10             <input id="input" type="number" v-model="num1" @keyup="getResult" @click="getResult" /> 
11              <select v-model="selected" @click="getResult">
12                 <option value ="">请选择</option>
13                  <option value ="+">+</option>
14                 <option value ="-">-</option>
15                 <option value ="*">*</option>
16                 <option value ="/">/</option>
17                 <option value ="%">%</option>
18              </select>
19             <input type="number" v-model="num2" @keyup="getResult" @click="getResult"/>
20             <input type="text" v-model="result" onfocus="this.blur()" />
21         </div>
22         <script type="text/javascript">
23             var vm = new Vue({
24                 el:'#app',
25                 data:{
26                     num1:0,
27                     num2:0,
28                     result:null,
29                     selected:''
30                 },
31                 methods:{
32                     
33                     getResult(){
34                         if(this.selected === '')
35                             return
36                         var str = this.num1 + this.selected + this.num2;
37                         this.result = eval(str);
38                     }
39                 },
40                 created:function(){
41                     this.getResult()
42                 }
43             })
44         </script>
45     </body>
46 </html>

 

二、通过computed计算属性

将计算结果设定为一个computed计算属性,该属性与两个表单中的数字相关联,每当数字发生改变自动计算出结果。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <input id="input" type="number" v-model="num1" placeholder="请输入数字" />
             <select v-model="selected">
                <option value ="">请选择</option>
                 <option value ="+">+</option>
                <option value ="-">-</option>
                <option value ="*">*</option>
                <option value ="/">/</option>
                <option value ="%">%</option>
             </select>
            <input type="number" v-model="num2" placeholder="请输入数字"/>
            <input type="text" v-model="result" onfocus="this.blur()" placeholder="请输入完整的表达式"/>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:'#app',
                data:{
                    num1:0,
                    num2:0,
                    selected:''
                },
                computed:{
                    result:function(){
                        if(this.selected === '' || this.num1=='' || this.num2 =='')
                            return null
                        return eval(`${this.num1}${this.selected}(${this.num2})`)
                    }
                }
            })
        </script>
    </body>
</html>

三、使用watch侦听属性

Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性。
每当侦听的属性发生改变时,vue会执行该属性对应的函数。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <input id="input" type="number" v-model="num1" placeholder="请输入数字" /> 
             <select v-model="selected">
                <option value ="">请选择</option>
                 <option value ="+">+</option>
                <option value ="-">-</option>
                <option value ="*">*</option>
                <option value ="/">/</option>
                <option value ="%">%</option>
             </select>
            <input type="number" v-model="num2" placeholder="请输入数字"/>
            <input type="text" v-model="result" onfocus="this.blur()" placeholder="请输入完整的表达式"/>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:'#app',
                data:{
                    num1:0,
                    num2:0,
                    result:null,
                    selected:''
                },
                methods:{    
                    com:function(){
                        if(this.selected === '' || this.num1=='' || this.num2==''){
                            this.result = null
                            return
                        }
                        this.result = eval(`${this.num1}${this.selected}(${this.num2})`)
                    }
                },
                watch:{
                    num1:function(){
                        this.com()
                    },
                    num2:function(){
                        this.com()
                    },
                    selected:function(){
                        this.com()
                    }
                },
                created(){
                    this.com()
                }
            })
        </script>
    </body>
</html>

 总结:

1.普通方法:主要就是使用methods中自定义方法进行调用接收。

2.计算属性:主要就是计算完数据要有返回值,特别注意计算属性的函数方法有返回值,需要使用双括号。

3.监听器:主要就是监听数据变化,特别注意监视同一个东西多个属性时,把多个属性数据放在同一个数组里面进行监听更加方便。

标签:function,VUE,num1,num2,selected,result,监听器,计算器,属性
From: https://www.cnblogs.com/xianyu123/p/17280519.html

相关文章

  • vue计算器
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>methods</title><scriptsrc="js/vue.js"></script></head><body><di......
  • VUE分别写出 4种计算器
    监听器计算机<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>watch</title><scriptsrc="js/vue.js"></script></head><body>......
  • vue计算器的四种代码
     1.使用表达式<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>hhhh</title><scripttype="text/javascript"src="js/vue.js"></script>&l......
  • 用三种方式实现简易及计算器
    目标:用三种方式实现简易的计算器(计算属性,监听器,方法)1.创建html,导入vue,实例化vue对象。<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title></title><scripttype="text/javascript"src=&quo......
  • VUE2.0 学习 第一组
    本笔记主要参考菜鸟教程和官方文档编写。 1.对于Vue2.0来说每个vue应用都需要实例化vue来实现。   varvm=newVue({//选项}) 2.首先,DOM是一种api,它可以动态地访问程序和脚本,更新其内容、结构和文档,我认为符合这类功能的都可以叫dom,其次,每一个DOM元素的id(......
  • 第三十二篇 vue - 应用规模化 - 单文件组件 SFC
    单文件组件SFCVue的单文件组件(即*.vue文件,英文Single-FileComponent,简称SFC)是一种特殊的文件格式,使我们能够将一个Vue组件的模板、逻辑与样式封装在单个文件中Vue的单文件组件是网页开发中HTML、CSS和JavaScript三种语言经典组合的自然延伸。<template>、<sc......
  • 第三十三篇 vue - 应用规模化 - 工具链
    项目脚手架viteVite是一个轻量级的、速度极快的构建工具,对VueSFC提供第一优先级支持。作者是尤雨溪,同时也是Vue的作者要使用Vite来创建一个Vue项目,非常简单npminitvue@latest这个命令会安装和执行create-vue,它是Vue提供的官方脚手架工具。跟随命令行的提示......
  • 第三十五篇 vue - 应用规模化 - 状态管理 - Pinia
    什么是状态管理理论上来说,每一个Vue组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例<script>exportdefault{//状态data(){return{count:0}},//动作methods:{increment(){this.count++......
  • 第三十四篇 vue - 应用规模化 - 服务端渲染 - SSR
    总览什么是SSRSSR-服务端渲染Vue.js是一个用于构建客户端应用的框架。默认情况下,Vue组件的职责是在浏览器中生成和操作DOMVue也支持将组件在服务端直接渲染成HTML字符串,作为服务端响应返回给浏览器,最后在浏览器端将静态的HTML“激活”(hydrate)为能够交互的客户端......
  • 第三十六篇 vue - 应用规模化 - 路由
    客户端vs服务端路由服务端路由指的是服务器根据用户访问的URL路径返回不同的响应结果。当我们在一个传统的服务端渲染的web应用中点击一个链接时,浏览器会从服务端获得全新的HTML,然后重新加载整个页面。然而,在单页面应用中,客户端的JavaScript可以拦截页面的跳转请求,动......