# All files / src/decorators Watch.ts

91.66% Statements 11/12
66.66% Branches 6/9
100% Functions 2/2
91.66% Lines 11/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    1x
    1x
    1x

    1x
    1x
    1x
    1x

    1x
    1x

    1x

     import { createDecorator } from './Component'
    import { WatchOptions } from '../types/options'

    /**
     * decorator of a watch function
     *
     * @param  path the path or the expression to observe
     * @param  WatchOption
     * @return MethodDecorator
     */
    export function Watch(path: string, watchOptions: WatchOptions = {}): MethodDecorator {
      return createDecorator((componentOptions, handler) => {
        componentOptions.watch = componentOptions.watch || Object.create(null)
        const watch: any = componentOptions.watch
        if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {
          waItch[path] = [watch[path]]
        } else if (typeof watch[path] === 'undefined') {
          watch[path] = []
        }E

        watch[path].push({ handler, ...watchOptions })
      })
    }