e 10 月之前
父節點
當前提交
2fd58b2d89
共有 3 個文件被更改,包括 233 次插入0 次删除
  1. 100 0
      vue/vue初阶/11.计算属性.html
  2. 63 0
      vue/vue初阶/12.列表过滤.html
  3. 70 0
      vue/vue初阶/13.列表过滤.html

+ 100 - 0
vue/vue初阶/11.计算属性.html

@@ -0,0 +1,100 @@
+<!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">
+        姓:<input v-model="firstName" type="text">
+        名:<input v-model="lastName" type="text">
+        <br><br>
+        <!-- 1. 插值模板-->
+        我的姓名是:{{firstName + lastName}}
+        <br>
+        <!-- 2.方法 -->
+        我的姓名是:{{getName()}}
+        <br>
+        <!-- 3.计算属性 -->
+        我的姓名是:{{myName}}{{full}}
+        <button @click="changeMain">修改</button>
+        <!-- 4.侦听器 / 监听器 -->
+        <br>
+        我的姓名是:{{fullName}}
+    </div>
+    <script src="./vue.js"></script>
+    <script>
+        var app = new Vue({
+            data:{
+                firstName:"孙",
+                lastName:"悟空",
+                part1: "娃",
+                part2: "哈哈",
+                fullName:"哈哈哈"
+            },
+            methods: {
+                getName() {
+                    return this.firstName + this.lastName
+                },
+                changeMain() {
+                    this.myName = ''
+                }
+            },
+            /**
+             * 计算属性 computed
+             * 原理:通过Object.defineProperty()中getter和setter 获取数据 修改数据
+             * methods 和 computed 初始化使用时没有什么区别
+             * 当数据发生改变 会执行代码进行处理 减少性能消耗 
+             * 同步操作
+             * 有缓存
+            */
+           computed:{
+                myName:{
+                    get() {
+                        return this.part1 + this.part2
+                    },
+                    set() {
+                        this.part1 = '百'
+                        this.part2 = '岁山'
+                    }
+                },
+                full() {
+                    return this.aaa = '111';
+                }
+           },
+           /**
+            * watch 侦听器 监听器
+            * immediate 立即监听
+            * deep 深度监听
+            * handle(newValue,oldValue) {执行语句}
+            * 异步操作
+            * 没有缓存
+           */
+           watch:{
+            firstName(newValue,oldValue) {
+                // console.log(newValue,oldValue)
+                this.fullName = newValue + this.lastName
+            },
+            lastName(newValue,oldValue) {
+                // console.log(newValue,oldValue)
+                this.fullName = this.firstName + newValue
+            },
+            fullName:{
+                immediate: true,
+                deep: true,
+                handler(newValue,oldValue) {
+                    console.log(newValue,'new')
+                    console.log(oldValue,'oldValue')
+                    // if(newValue) {
+                    //     alert(newValue)
+                    // } else {
+                    //     alert("请输入姓名")
+                    // }
+                }
+            }
+           }
+        }).$mount("#app");
+    </script>
+</body>
+</html>

+ 63 - 0
vue/vue初阶/12.列表过滤.html

@@ -0,0 +1,63 @@
+<!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">
+        关键字搜索:<input type="text" placeholder="请输入关键字" v-model="keyWord" >
+        <ul v-for="(item,index) in newList" :key="index">
+            <li>{{index+1}}--我叫{{item.name}}--今年{{item.age}}--是个{{item.sex}}孩</li>
+        </ul>
+    </div>
+    <script src="./vue.js"></script>
+    <script>
+      var vm = new Vue({
+        data: {
+          keyWord:"",
+          arr: [
+            {
+              name: "Lucy",
+              age: 11,
+              sex: "女",
+            },
+            {
+              name: "LiLi",
+              age: 31,
+              sex: "男",
+            },
+            {
+              name: "八戒",
+              age: 21,
+              sex: "男",
+            },
+            {
+              name: "八卦",
+              age: 23,
+              sex: "男",
+            },
+            {
+              name: "孙悟空",
+              age: 27,
+              sex: "男",
+            },
+            {
+              name: "唐僧",
+              age: 33,
+              sex: "女",
+            },
+          ],
+        },
+        computed:{
+            newList(){
+                return this.arr.filter((ele) => {
+                    return ele.name.indexOf(this.keyWord) != -1
+                })
+            }
+        }
+      }).$mount("#app");
+    </script>
+  </body>
+</html>

+ 70 - 0
vue/vue初阶/13.列表过滤.html

@@ -0,0 +1,70 @@
+<!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">
+        关键字搜索:<input type="text" placeholder="请输入关键字" v-model="keyWord" >
+        <ul v-for="(item,index) in newList" :key="index">
+            <li>{{index+1}}--我叫{{item.name}}--今年{{item.age}}--是个{{item.sex}}孩</li>
+        </ul>
+    </div>
+    <script src="./vue.js"></script>
+    <script>
+      var vm = new Vue({
+        data: {
+          keyWord:"",
+          arr: [
+            {
+              name: "Lucy",
+              age: 11,
+              sex: "女",
+            },
+            {
+              name: "LiLi",
+              age: 31,
+              sex: "男",
+            },
+            {
+              name: "八戒",
+              age: 21,
+              sex: "男",
+            },
+            {
+              name: "八卦",
+              age: 23,
+              sex: "男",
+            },
+            {
+              name: "孙悟空",
+              age: 27,
+              sex: "男",
+            },
+            {
+              name: "唐僧",
+              age: 33,
+              sex: "女",
+            },
+          ],
+          newList:[]
+        },
+        watch:{
+          keyWord:{
+            immediate: true,
+            deep: true,
+            handler(newValue,oldValue) {
+              console.log(newValue,'新')
+              console.log(oldValue,'旧')
+              this.newList = this.arr.filter((ele) => {
+                return ele.sex.indexOf(newValue)!= -1
+              })
+            }
+          }
+        }
+      }).$mount("#app");
+    </script>
+  </body>
+</html>