Запускает наблюдение за выражением или вычисляемой функцией на предмет изменений. В параметры коллбэка будут переданы новое и старое значения отслеживаемого объекта. Выражение может быть только простым путём до переменной с разделителями-точками. Для более сложных случаев используйте функцию.
Обратите внимание: когда изменяете (а не заменяете) объект или массив, старое и новое значения при вызове коллбэка будут совпадать, так как они ссылаются на один и тот же объект или массив. Vue не сохраняет копии объекта на момент, предшествовавший изменениям.
Пример:
// следим за переменной, указанной путём:vm.$watch('a.b.c',function(newVal,oldVal){ // переменная изменилась, сделайте что-нибудь})// следим за функцией:vm.$watch(function(){ // Данный обработчик будет вызываться каждый раз, когда выражение // `this.a + this.b` даёт результат. Это похоже на отслеживание // вычисляемого свойства без определения самого вычисляемого свойстваreturnthis.a+this.b},function(newVal,oldVal){ // значение функции изменилось, сделайте что-нибудь})
vm.$watch возвращает функцию unwatch, которая останавливает слежение:
Опция: deep
Чтобы слежение реагировало на изменения во вложенных объектах, передайте deep: true в объекте параметров. Обратите внимание, что для наблюдения за изменениями массивов этого не требуется.
Опция: immediate
Если передано immediate: true, коллбэк будет вызван сразу же после начала наблюдения с текущим значением выражения:
Обратите внимание, при использовании опции immediate нет возможности отменить отслеживание указанного свойства в коллбэке вызванном в первый раз.
Если необходимо вызвать функцию unwatch внутри коллбэка, то следует проверять её доступность: