e 1 년 전
부모
커밋
1a71193956
1개의 변경된 파일102개의 추가작업 그리고 0개의 파일을 삭제
  1. 102 0
      vue2.0/vue初阶/10.计算属性.html

+ 102 - 0
vue2.0/vue初阶/10.计算属性.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Document</title>
+  </head>
+  <body>
+    <div id="app">
+      <!-- v-text v-html v-model -->
+      <div>
+        姓:<input type="text" v-model="firstName" />
+        <br />
+        名:<input type="text" v-model="lastName" />
+        <br />
+        <!-- 1.插值模板 -->
+        我的名字是:{{firstName + lastName}}
+        <br />
+        <!-- 2.methods -->
+        我的名字是:{{getName()}}
+        <br>
+        <!-- 3.计算属性 -->
+        计算属性:{{myName}}
+        <br>
+        计算属性:{{fullName}}
+        <br>
+        <!-- 4.侦听器 -->
+        侦听器:{{full}}
+        
+      </div>
+    </div>
+    <script src="./vue.js"></script>
+    <script>
+      var app = new Vue({
+        el: "#app",
+        // 数据
+        data: {
+          firstName: "张",
+          lastName: "三",
+          newName: "李",
+          oldName: "四",
+          full:"",
+          aaa:""
+        },
+        // 生命周期
+        created() {},
+        // 方法
+        methods: {
+          getName() {
+            return this.firstName + this.lastName;
+          },
+        },
+        // 计算属性 computed
+        /**
+         * 原理:通过数据劫(object.defineProperty),获取数据,通过getter和setter去修改获得数据
+         * methods 和 computed在初始使用时 并没有区别
+         * 但时当页面涉及数据计算量大时 计算属性可以减少性能消耗
+         * 同步操作
+         */
+        computed: {
+            myName:{
+                get() {
+                    return this.newName + this.oldName
+                },
+                // 点击事件后补充
+                set() {
+                    this.newName = "天气";
+                    this.oldName = "真好";
+                }
+            },
+            fullName() {
+                return this.aaa = "周三"
+            }
+        },
+        /**
+         * watch 侦查器 监听器
+         * 异步操作
+        */
+        watch:{
+            // 初次进入页面不执行 只有数据发生变化后才会进行操作
+            firstName(newValue,oldValue) {
+                this.full = newValue + this.lastName;
+            },
+            lastName(newValue,oldValue) {
+                console.log(newValue,'1')
+                console.log(oldValue,'2')
+                this.full = this.firstName + newValue;
+            },
+            // 补充知识点
+            // newName:{
+            //     immediate:true, 立即开始
+            //     deep: true, 深度监听
+            //     handler(){
+                        // 方法....
+            //     }
+            // }
+            
+        }
+      });
+    </script>
+  </body>
+</html>