vm.$watch
vm.$watch( expOrFn, callback, [options] )
vm.$watch( expOrFn, callback, [options] )Аргументы:
{string | Function} expOrFn{Function | Object} callback{Object} [options]{boolean} deep{boolean} immediate
Возвращает: {Function} unwatch
Использование:
Запускает наблюдение за выражением или вычисляемой функцией на предмет изменений. В параметры коллбэка будут переданы новое и старое значения отслеживаемого объекта. Выражение может быть только простым путём до переменной с разделителями-точками. Для более сложных случаев используйте функцию.
Обратите внимание: когда изменяете (а не заменяете) объект или массив, старое и новое значения при вызове коллбэка будут совпадать, так как они ссылаются на один и тот же объект или массив. Vue не сохраняет копии объекта на момент, предшествовавший изменениям.
Пример:
// следим за переменной, указанной путём:
vm.$watch('a.b.c', function (newVal, oldVal) {
// переменная изменилась, сделайте что-нибудь
})
// следим за функцией:
vm.$watch(
function () {
// Данный обработчик будет вызываться каждый раз, когда выражение
// `this.a + this.b` даёт результат. Это похоже на отслеживание
// вычисляемого свойства без определения самого вычисляемого свойства
return this.a + this.b
},
function (newVal, oldVal) {
// значение функции изменилось, сделайте что-нибудь
}
)vm.$watch возвращает функцию unwatch, которая останавливает слежение:
Опция: deep
Чтобы слежение реагировало на изменения во вложенных объектах, передайте deep: true в объекте параметров. Обратите внимание, что для наблюдения за изменениями массивов этого не требуется.
Опция: immediate
Если передано immediate: true, коллбэк будет вызван сразу же после начала наблюдения с текущим значением выражения:
Обратите внимание, при использовании опции immediate нет возможности отменить отслеживание указанного свойства в коллбэке вызванном в первый раз.
Если необходимо вызвать функцию unwatch внутри коллбэка, то следует проверять её доступность:
Last updated
Was this helpful?