这篇文章主要为大家展示了“Vue如何监视数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何监视数据”这篇文章吧。
特点:vue会监视data中所有层级的数据,并且如果他检测到是对象那么就会给对象里面所有的属性配置getter和setter函数
通过setter实现监视,且要在new Vue时就传入要监测的数据
(1).对象中后追加的属性,Vue默认不做响应式处理(就是没有配置getter和setter函数)
(2).如需给后添加的属性做响应式,请使用如下API:
Vue.set(target,propertyName/index,value)
vm.$set(target,propertyName/index,value)
通过包裹数组更新元素的方法实现,本质就是做了两件事:
(1). 调用原生对应的方法对数组进行更新。
(2). 重新解析模板,进而更新页面。
在Vue修改数组中的某个元素一定要用如下方法:
(1). 使用这些API:push()
、pop()
、shift()
、unshift()
、splice()
、sort()
、reverse()
(2). Vue.set() 或 vm.$set()
<div id="root">
<h3>人员信息</h3>
<button @click="updatep">点击更新马东梅的信息</button>
<ul>
<li v-for='p in person' :key="p.id">
{{p.name}} -- {{p.age}} -- {{p.gender}}
</li>
</ul>
<button @click="addNew">在结尾添加一个人的信息</button>
</div>
<script>
Vue.config.productionTip = false
let vm = new Vue({
el: '#root',
data: {
person: [
{ id: "001", name: "马冬梅", age: 20, gender: "女" },
{ id: "002", name: "夏洛特", age: 33, gender: "男" },
{ id: "003", name: "沈腾", age: 50, gender: "男" },
{ id: "004", name: "贾玲", age: 45, gender: "女" },
]
},
methods: {
updatep() {
// 但是下面方法不奏效,此方法Vue检测不到,
// 原因是因为数组上面没有getter和setter方法所以检测不到数据发生改变
// this.person[0] = {id:"001",name:"李焕英",age:66,gender:"女"}
// 下面方法奏效,是因为属性上面已经配置了getter和setter方法
// this.person[0].name = "李焕英"
// this.person[0].age = "66"
// this.person[0].gender = "女"
// this.person.splice(0, 1, { id: "001", name: "李焕英", age: 66, gender: "女" })
this.$set(this.person, 0, { id: "001", name: "李焕英", age: 66, gender: "女" })
},
addNew() {
this.person.push({id: "005", name: "老妹啊", age: 99, gender: "女"})
}
},
})
</script>
<div id="root">
<h3>学生信息</h3>
<p>姓名:{{student.name}}</p>
<!--
一个很重要的点:如果是查找对象中不存在的属性,返回的是一个undefined
不管v-show或者是v-if,如果等到undefined的就不显示
-->
<p v-show="student.sex">性别:{{student.sex}}</p>
<p>年龄:{{student.age}}</p>
<p>地址:{{student.address}}</p>
<p>联系方式:{{student.contact}}</p>
朋友:<p v-for="(v,index) in student.friends" :key="index">{{v.name}} -- {{v.age}}</p>
<button @click="add">点击添加性别</button>
</div>
<script>
Vue.config.productionTip = false
let vm = new Vue({
el: '#root',
data: {
student: {
name: "Jack",
age: 18,
address: "北京",
contact: "13xxxxxxx56",
friends: [
{ name: 'Mark', age: 12 },
{ name: 'Lisa', age: 52 },
{ name: 'Guli', age: 25 },
]
}
},
methods: {
add() {
两种写法都可以
// this.$set(vm.student,"sex","男")
Vue.set(this.student,"sex","男")
}
},
})
</script>
以上是“Vue如何监视数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。