Browse Source

fix:day27

e 1 year ago
parent
commit
96d94e81c6
2 changed files with 148 additions and 0 deletions
  1. 59 0
      day27/4.vue数据监听.html
  2. 89 0
      day27/5.练习.html

+ 59 - 0
day27/4.vue数据监听.html

@@ -0,0 +1,59 @@
+<!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">
+        <ul>
+            <li v-for="(item,index) of person" :key="index">
+                {{item.name}}--{{item.age}}--{{item.sex}}
+            </li>
+        </ul>
+        <button @click="updateMsg">修改</button>
+    </div>
+    <script src="./vue.js"></script>
+    <script>
+        var app = new Vue({
+            el:'#app',
+            data:{
+                person:[
+                    {
+                        name:"LiLi",
+                        age: 19,
+                        sex: '女'
+                    },
+                    {
+                        name:"Ming",
+                        age: 29,
+                        sex: '男'
+                    },
+                    {
+                        name:"Lucy",
+                        age: 99,
+                        sex: '女'
+                    },
+                    {
+                        name:"马冬梅",
+                        age: 98,
+                        sex: '女'
+                    },
+                ],
+            },
+            methods: {
+                // vue 响应式原理 => Object.defineProperty(getter/setter)
+                // 数据监听 => 数据与视图的更新
+                // Vue.set(target,propertyName/index,value)
+                // (app实例).$set(target,propertyName/index,value)
+                updateMsg() {
+                    // this.person[1] = {name:"马琛",age: 20,sex:'男'}
+                    this.$set(this.person,1,{name:"马琛",age: 20,sex:'男'})
+                    // Vue.set(this.person,1,{name:"马琛",age: 20,sex:'男'})
+                }
+            },
+        })
+    </script>
+</body>
+</html>

+ 89 - 0
day27/5.练习.html

@@ -0,0 +1,89 @@
+<!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>
+    <style>
+      button {
+        margin-top: 10px;
+      }
+    </style>
+
+    <div id="root">
+      <h1>学生信息</h1>
+      <button @click="addAge">年龄+1岁</button> <br />
+      <button @click="addSex">添加性别属性,默认值:男</button> <br />
+      <button @click="updateSex">修改性别</button> <br />
+      <button @click="addFriend">在列表首位添加一个朋友</button> <br />
+      <button @click="updateFirstFriendName">
+        修改第一个朋友的名字为:张三
+      </button>
+      <br />
+      <button @click="addHobby">添加一个爱好</button> <br />
+      <button @click="updateHobby">修改第一个爱好为:开车</button> <br />
+      <button @click="removeSmoke">过滤掉爱好中的抽烟</button> <br />
+      <h3>姓名:{{ student.name }}</h3>
+      <h3>年龄:{{ student.age }}</h3>
+      <h3 v-if="student.sex">性别:{{student.sex}}</h3>
+      <h3>爱好:</h3>
+      <ul>
+        <li v-for="(h,index) in student.hobby" :key="index">{{ h }}</li>
+      </ul>
+      <h3>朋友们:</h3>
+      <ul>
+        <li v-for="(f,index) in student.friends" :key="index">
+          {{ f.name }}--{{ f.age }}
+        </li>
+      </ul> 
+    </div>
+    <script src="./vue.js"></script>
+    <script type="text/javascript">
+      const vm = new Vue({
+        el: "#root",
+        data: {
+          student: {
+            name: "tom",
+            age: 18,
+            hobby: ["抽烟", "喝酒", "烫头"],
+            friends: [
+              { name: "jerry", age: 35 },
+              { name: "tony", age: 36 },
+            ],
+          },
+        },
+        methods: {
+            addAge() {
+                 this.student.age++;
+            },
+            addSex() {
+                this.$set(this.student,'sex','男');
+            },
+            updateSex() {
+                this.$set(this.student,'sex','未知');
+            },
+            addFriend() {
+                this.student.friends.unshift({name:"Jack",age:21});
+            },
+            updateFirstFriendName() {
+                this.student.friends[0].name = '张三';
+            },
+            addHobby() {
+                this.student.hobby.push("于谦");
+            },
+            updateHobby() {
+                this.$set(this.student.hobby,0,'开车');
+            },
+            removeSmoke() {
+                // this.student.hobby = this.student.hobby.filter((item) => {
+                //     return item != '抽烟';
+                // })
+                this.student.hobby.splice(0,1)
+            }
+        },
+      });
+    </script>
+  </body>
+</html>