/**
* 设置监听器
*/
const setWatcher = (data, watch, context) => { // 接收index.js传过来的data对象和watch对象
Object.keys(watch).forEach(v => { // 将watch对象内的key遍历
observe(data, v, watch[v], context); // 监听data内的v属性,传入watch内对应函数以调用
})
}
/**
* 监听属性 并执行监听函数
*/
function observe(obj, key, watchFun, context) {
var val = obj[key]; // 给该属性设默认值
Object.defineProperty(obj, key, {
configurable: true,
enumerable: true,
set: function(value) {
val = value;
watchFun.call(context, value, val); // 赋值(set)时,调用对应函数
},
get: function() {
return val;
}
})
}
module.exports = {
setWatcher
}
使用:
const watch = require('../common/watch.js');
watch.setWatcher(this.data, this.watch, this);
// 监听
watch: {},