基于vue动态数据绑定2,再多考虑一个问题:”深层次数据变化如何逐层往上传播”。举个例子。
let app = new Observer({
name: {
first: 'yy',
last: 'jm'
},
age: 18
});
app2.$watch('name', function (newName) {
console.log('你的姓名发生了变化')
});
app.data.name.firstName = 'hahaha';
// 输出:你的姓名发生了变化。
为了实现深层次数据变化的向上传播,需要得到被改变的数据的父级并触发相应的回调函数,然后再逐级向上触发每一层级的回调函数。实现代码如下:
<script>
function Observer(data, events, parent, parentKey){
this.data = data;
this.events = events || {};
this.parent = parent || {};
this.parentKey = parentKey || '';
this.walk(data, this.events);
}
Observ