关于dep.target=null的问题
rmd1710714107 opened this issue · 2 comments
rmd1710714107 commented
Watcher.js文件
get: function() {
Dep.target = this;
var value = this.getter.call(this.vm, this.vm);
Dep.target = null;
return value;
},
这里的Dep.target为什么要再次重置为null?
daiwa233 commented
避免重复添加watcher
get: function() {
if (Dep.target) {
dep.depend();
}
return val;
},
只有当watcher存在时,触发getter才会收集依赖。
var value = this.getter.call(this.vm, this.vm);
// 这段代码是让dep添加这个watcher
// compile.js bind方法
updaterFn && updaterFn(node, this._getVMVal(vm, exp));
// 这段代码更新了节点的值,也会触发getter,如果Dep.target存在,会添加更多的watcher
rmd1710714107 commented
避免重复添加watcher
get: function() { if (Dep.target) { dep.depend(); } return val; },只有当watcher存在时,触发getter才会收集依赖。
var value = this.getter.call(this.vm, this.vm); // 这段代码是让dep添加这个watcher // compile.js bind方法 updaterFn && updaterFn(node, this._getVMVal(vm, exp)); // 这段代码更新了节点的值,也会触发getter,如果Dep.target存在,会添加更多的watcher
明白了,感谢