首页 > 其他分享 >使用vue四种方法写一个计算器

使用vue四种方法写一个计算器

时间:2023-04-01 19:57:50浏览次数:38  
标签:opt vue shu 计算器 value break number2 number1 四种

第一种:使用computed计算属性

1.创建项目,引入vue

<script type="text/javascript" src="js/vue.js" ></script>

2.实例化vue

<div id="app">
    
</div><script>
 var vm = new Vue({  
el:"#app",//通过el与div元素绑定   }) </script>

3.写一个下拉框形式的运算符号和定义两个数值并且用v-model与data里的属性双向绑定

<input type="text" v-model.number="number1" />
            <select v-model="opt">
                <option>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select>
            <input type="text" v-model.number="number2" />

4.将运算符号和两个数值放在data里,再运用computed计算属性进行计算

<script type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    number1:0,
                    number2:0,
                    opt:"*"
                },
                computed:{
                    m2(){
                        if (this.opt == "+") {
                            return    this.number1 + this.number2;
                        } else if (this.opt == "-"){
                            return    this.number1 - this.number2;
                        }else if (this.opt == "*"){
                            return    this.number1 * this.number2;
                        }else if (this.opt == "/"){
                            return    this.number1 / this.number2;
                        }
                    
                    }
                }
            })
       </script>

5.将运算结果放在div里显示出来

结果:{{number1}}{{opt}}{{number2}}={{m2}}

 第二种:使用methods方法

1.再新建一个HTML文件和第一种方法的1.2.3.步骤相同,增加了一个button,定义一个名为ji的方法用@click来监听这个事件

<head>
        <meta charset="UTF-8">
        <title></title>
        <script type="text/javascript" src="js/vue.js" ></script>
    </head>
    <body>
        <div id="app">
            <input type="text" v-model.number="number1" />
            <select v-model="opt">
                <option>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select>
            <input type="text" v-model.number="number2" /><button @click="ji">计算</button>
            <br />            
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:"#app"
</script>
                

 

2.用methods方法写如何计算

<script type="text/javascript">
            var vm = new Vue({
                el:"#app",
                data:{
                    number1:0,
                    number2:0,
                    jisuan:"",
                    opt:"+"
                },
                methods:{
                    ji:function(){
                        if(this.opt == "+"){
                            this.jisuan = this.number1+this.number2
                        } else if(this.opt == "-"){
                            this.jisuan = this.number1-this.number2
                        }else if(this.opt == "*"){
                            this.jisuan = this.number1*this.number2
                        }else if(this.opt == "/"){
                            this.jisuan = this.number1/this.number2
                        }
                        
                    }
                }
            })
        </script>

3.将运算结果放在div里显示出来

结果:{{number1}}{{opt}}{{number2}}={{jisuan}}

第三种:使用watch状态监听

1.再新建一个HTML文件和第一种方法的1.2.3.步骤相同

<head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript" src="js/vue.js"></script>
    </head>

    <body>
        <div id="app">
            <input type="text" v-model.number="number1" />
            <select v-model="opt">
                <option>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select>
            <input type="text" v-model.number="number2" />
            <p>结果:{{val}}</p>
        </div>
    </body>
    <script type="text/javascript">
        var vm = new Vue({
            el: "#app",
            data: {
                number1: 0,
                number2: 0,
                opt: "+",
                val: "",
            }
</script>

2.使用watch写如何计算

<script type="text/javascript">
        var vm = new Vue({
            el: "#app",
            data: {
                number1: 0,
                number2: 0,
                opt: "+",
                val: "",
            },
            watch: {
                number1(shu) {
                    let value = 0;
                    switch(this.opt) {
                        case '+':
                            value = shu + this.number2;
                            break;
                        case '-':
                            value = shu - this.number2;
                            break;
                        case '*':
                            value = shu * this.number2;
                            break;
                        case '/':
                            value = shu / this.number2;
                            break;
                    }
                    this.val = shu  + this.opt + this.number2 + "=" + value;
                },
                number2(shu) {
                    let value = 0;
                    switch(this.opt) {
                        case '+':
                            value = this.number1 + shu ;
                            break;
                        case '-':
                            value = this.number1 - shu ;
                            break;
                        case '*':
                            value = this.number1 * shu ;
                            break;
                        case '/':
                            value = this.number1 / shu ;
                            break;
                    }
                    this.val = this.number1 + this.opt + shu  + "=" + value;
                },
                opt(shu ) {
                    let value = 0;
                    switch(shu ) {
                        case '+':
                            value = this.number1 + this.number2;
                            break;
                        case '-':
                            value = this.number1 - this.number2;
                            break;
                        case '*':
                            value = this.number1 * this.number2;
                            break;
                        case '/':
                            value = this.number1 / this.number2;
                            break;
                    }
                    this.val = this.number1 + this.opt + this.number2 + "=" + value;
                }
            }

        })
    </script>

第四种:用表达式的方法写

新建一个HTML,引入vue,写一个下拉框形式的运算符号和定义两个数值并且用v-model与data里的属性双向绑定,用v-if判断运算符号进行相应的计算,实例化vue

<html>

    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript" src="js/vue.js"></script>
    </head>

    <body>
        <div id="app">
            <input type="text" v-model.number="number1" />
            <select v-model="opt">
                <option>+</option>
                <option>-</option>
                <option>*</option>
                <option>/</option>
            </select>
            <input type="text" v-model.number="number2" />
            <p v-if="opt=='+'">{{number1}}{{opt}}{{number2}}={{number1+number2}}</h2>
            <p v-if="opt=='-'">{{number1}}{{opt}}{{number2}}={{number1-number2}}</p>
            <p v-if="opt=='*'">{{number1}}{{opt}}{{number2}}={{number1*number2}}</p>
            <p v-if="opt=='/'">{{number1}}{{opt}}{{number2}}={{number1/number2}}</p>
    </body>
    <script type="text/javascript">
        var vm = new Vue({
            el: "#app",
            data: {
                number1: 0,
                number2: 0,
                opt: "+",
            }
        })
    </script>

</html>

 效果展示

 

标签:opt,vue,shu,计算器,value,break,number2,number1,四种
From: https://www.cnblogs.com/cccoop/p/17279052.html

相关文章

  • VueRouter中的滚动行为
    参考:https://github.com/vuejs/vue-router/blob/dev/docs/zh/guide/advanced/scroll-behavior.md滚动行为观看VueSchool的如何控制滚动行为的免费视频课程(英文)使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。vue-router......
  • Vue选项-实例生命周期
    Vue选项-实例生命周期VUE家族系列:Vue快速上门(1)-基础知识Vue快速上门(2)-模板语法Vue快速上门(3)-组件与复用01、基本概念1.1、先了解下MVVMVUE是基于MVVM思想实现的,❓那什么是MVVM呢?—— MVVM,是Model-View-ViewModel的缩写,是一种软件架构模式。其核心思想就是分离视图......
  • vue3面包屑导航栏
    import{useRoute,useRouter}from"vue-router";import{computed,ref,watch,watchEffect,nextTick}from"vue";constrouter=useRouter()constroute=useRoute()constbreadcrumb=ref([])/***@Date:2023-03-2817:55:20*@descript......
  • Vue——node-ops.ts
    前言node-ops.ts位于src/platforms/web/runtime/node-ops.ts,主要封装了DOM操作的API;内容importVNodefrom'core/vdom/vnode'import{namespaceMap}from'web/util/index'//创建一个由标签名称tagName指定的HTML元素//https://developer.mozilla.org/zh-CN/do......
  • vue3+elementPlus 深色主题切换
    首先安装需要的两个依赖npmi@vueuse/corenpminstallelement-plus--save在main.js中引入css文件,自定义深色背景颜色可以看ElementPlus官方网站//引入elementUIimportElementPlusfrom'element-plus'importzhCnfrom'element-plus/dist/locale/zh-cn.mjs'//引入......
  • defineExporse vue3中一个由子组件导出数据,让父组件调用的方法。
    子组件<scriptsetup>import{ref,reactive}from'vue'constisFlag=ref(false)constdata=reactive({name:'tom',age:18})//把数据导出defineExpose({data,isFlag})&......
  • macos:用homebrew安装node/安装vue-cli( node v18.15.0/ Homebrew 4.0.10-119)
    一,用brew安装nodeliuhongdi@liuhongdideMacBook-ProHomebrew%brewinstallnode@18==>Downloadinghttps://formulae.brew.sh/api/formula.jws.json#=#=#==>Fetchingnode......
  • vue:路由守卫
    路由守卫作用:对路由进行权限控制配置路由守卫应在暴露前配置分类:全局守卫、独享守卫、组件内守卫首先先给需要鉴权的路由设置好meta配置项。meta配置项:是vue-router中的一个对象,主要用于存储路由的元数据(metadata)信息。这些元数据信息可以是一些描述性的内容,比如页面......
  • Vue引用富文本编辑器
    1.在package.json加上并安装依赖"devDependencies":{"@jsdawn/vue3-tinymce":"^1.1.7",}2.在页面中引入importVue3Tinymcefrom"@jsdawn/vue3-tinymce";3.使用<vue3-tinymcev-model="item.blockDataObj.text":setting=&qu......
  • 第二十二篇 vue - 深入组件 - 异步组件 - defineAsyncComponent
    基本用法defineAsyncComponent在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue提供了defineAsyncComponent方法来实现此功能import{defineAsyncComponent}from'vue'constAsyncComp=defineAsyncComponent(()=>{returnn......