Vue学习(七): 简易计算器案例

简易计算器案例很简陋,目的是为了加深学习v-model 数据双向绑定

第一种写法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-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="./vue.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">
        <input type="text" v-model="result">
    </div>
    <script>
    var vm = new Vue({
        el: '#app',
        data:{
            n1: 0,
            n2: 0,
            result: 0,
            opt:'+'
        },
        methods:{
            calc(){//计算器算数的方法
                //逻辑:
                //拿到n1,opt,n2值,this.result值计算
                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;
                }
            }
        }
    })
    </script>
</body>
</html>

第二种有点投机取巧,正式开发中,最好不要这样操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-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="./vue.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">
        <input type="text" v-model="result">
    </div>
    <script>
    var vm = new Vue({
        el: '#app',
        data:{
            n1: 0,
            n2: 0,
            result: 0,
            opt:'+'
        },
        methods:{
            calc(){//计算器算数的方法
                //逻辑:
                //拿到n1,opt,n2值,this.result值计算
                var codeStr = 'parseInt(this.n1) ' +  this.opt + ' parseInt(this.n2)'
                this.result= eval(codeStr)
            }
        }
    })
    </script>
</body>
</html>