vue中的计算属性

<!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">
    <script type="text/javascript" src="../js/vue.js"></script>

    <title>Document</title>
</head>
<body>
    <div id="root"><input type="text" v-model="firstNam" ><br><input type="text" v-model="lastName"><br>
       全名 <span>{{fullName}}</span>
    </div>
    <script>
        const vm=new Vue({
            el: "#root",
            data: {
                firstNam: "",
                lastName:""
            },
            computed:{
                fullName:{
                    //当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
                    //初次读取fullName会被调用get ,所依赖的数据发生变化的时候get也重新调用
                     get(){

                         return this.firstNam+"-"+this.lastName;
                     },
                     //set当fullName被修改时
                     set(value){
                        const arr=value.split("-");
                        this.firstNam=arr[0];
                        this.lastName=arr[1];
                     }
                }
            }
         

        })
    </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">
    <script type="text/javascript" src="../js/vue.js"></script>

    <title>Document</title>
</head>
<body>
    <div id="root"><input type="text" v-model="firstNam" ><br><input type="text" v-model="lastName"><br>
       全名 <span>{{firstNam}}-{{lastName}} </span>
    </div>
    <script>
        new Vue({
            el: "#root",
            data: {
                firstNam: "",
                lastName:""
            }

        })
    </script>
</body>
</html>

methods实现

<!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">
    <script type="text/javascript" src="../js/vue.js"></script>

    <title>Document</title>
</head>
<body>
    <div id="root"><input type="text" v-model="firstNam" ><br><input type="text" v-model="lastName"><br>
       全名 <span>{{fullName()}} </span>
    </div>
    <script>
        new Vue({
            el: "#root",
            data: {
                firstNam: "",
                lastName:""
            },
            methods:{
                fullName(){
                    return this.firstNam+"-"+this.lastName;
                }
            }

        })
    </script>
</body>
</html>

 

posted @ 2022-10-28 16:54  小白字太白  阅读(63)  评论(0编辑  收藏  举报