Skip to content

initWatch

javascript
// watch 的 key 是字符串,如果想监视内层属性,用 . 进行分隔。
// watch 的 value 可以是函数、数组、对象、字符串。
// initWatch 中遍历 vm.$options.watch,获取 handler,调用 createWatcher 生成
// user watcher,如果 handler 是数组,则遍历数组对每一项并调用 createWatcher。
export default {
  watch: {
    a (val, oldVal) {},
    b: 'someMethod',
    c: [ function foo () {}, function bar () {} ],
    d: { 
      function foo () {}, 
      immediate: true 
    }
    'e.f' () {}
  }
}

function initWatch(vm: Component, watch: Object) {
  // 遍历 watch 对象
  for (const key in watch) {
    // 取出 handler
    const handler = watch[key]
    // 生成 user watcher
    if (isArray(handler)) {
      for (let i = 0; i < handler.length; i++) {
        createWatcher(vm, key, handler[i])
      }
    } else {
      createWatcher(vm, key, handler)
    }
  }
}