vue-day18--vue监测数组

发布时间 2023-07-16 01:43:52作者: 雪落无痕1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>watch与computed实现列表过滤</title>
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="root">
<h1>学校信息</h1>
<h2>学校名称{{name}}</h2>
<h2>学校地址{{adress}}</h2>
<hr />

<h1>学生信息</h1>
<button @click="addSex">添加一个性别属性,默认是男</button>
<h2>姓名{{student.name}}</h2>
<h2 v-if="student.sex">性别{{student.sex}}</h2>

<h2>年龄 真实{{student.age.rAge}}, 对外{{student.age.sAge}}</h2>

<h2>朋友们</h2>
<ul>
<li v-for="(f,index) in student.friends" :key="index">
{{f.name}}-{{f.age}}-{{f.sex}}
</li>
</ul>

<h2>爱好</h2>
<button @click="addHobby">添加一个爱好学习</button>
<ul>
<li v-for="(h,index) in student.hobby" :key="index">{{h}}</li>
</ul>
</div>

<script type="text/javascript">
const vm = new Vue({
el: "#root", //el用于指定当前vue实例为那个容器服务,但通常为css选择器字符串
data: {
//data 用于存储数据,数据供el 所指定的容器去使用,我们暂时写成一个对象
name: "尚硅谷99999",
adress: "北京",
student: {
name: "tom",
age: {
rAge: 40,
sAge: 29,
},
friends: [
{ name: "jettty", age: 35 },
{ name: "tonny", age: 36 },
],
hobby: ["吸烟", "喝酒", "烫头"],
},
},
methods: {
addSex() {
//Vue.set(this.student,'sex',"男")
this.$set(this.student, "sex", "男");
},

addHobby() {
//this.$set(this.student.hobby,0, "学习");
this.student.hobby.push("学习");
},
},
});
</script>
</body>
</html>
 
 
//

Vue 将被侦听的数组的变更方法进行了包裹,所以它们也将会触发视图更新。这些被包裹过的方法包括:

  • push()
  • pop()
  • shift()
  • unshift()
  • splice()
  • sort()
  • reverse()