在vue开发中,当生成vue实例后,再次给数据赋值时,有时候并不会自动更新到视图上去;
eg:<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vue $set的使用</title>
<script src="https://static.runoob.com/assets/vue/1.0.11/vue.min.js"></script>
</head>
<body>
<div id="app">
姓名:{{ name }}<br>
手机:{{phone}}<br>
性别:{{sex}}<br>
说明:{{list.instr}}
</div>
<script>
var data = {
name: "简书",
phone: '15736882244',
list: {
instr: 'my name is Yilia'
}
}
//var key = 'instr';var vm = new Vue({
el:'#app',
data: data,
ready: function(){
//Vue.set(data,'sex', '男');
//this.$set('list.'+key, 'who are you?');
}
});
data.sex = '女';
</script>
</body>
</html>
这样运行的结果是
姓名:简书
年龄:15736882244
性别:
说明:my name is Yilia
解决方法是:
Vue.set(data,'sex', '男')
还可以使用 vm.$set实例方法,这也是全局 Vue.set方法的别名:
var key = 'instr'; //这种主要用于当对象中某个属性值动态生成时处理方式
this.$set('list.'+key, 'who are you?');
或
this.$set('list.instr', 'who are you?');