Vue.js
Зрителей
Поиск…
Как это устроено
Вы можете просмотреть свойство данных любого экземпляра Vue. При просмотре свойства вы вызываете метод при изменении:
export default {
data () {
return {
watched: 'Hello World'
}
},
watch: {
'watched' () {
console.log('The watched property has changed')
}
}
}
Вы можете получить старое значение и новое:
export default {
data () {
return {
watched: 'Hello World'
}
},
watch: {
'watched' (value, oldValue) {
console.log(oldValue) // Hello World
console.log(value) // ByeBye World
}
},
mounted () {
this.watched = 'ByeBye World'
}
}
Если вам нужно посмотреть вложенные свойства объекта, вам нужно будет использовать свойство deep
:
export default {
data () {
return {
someObject: {
message: 'Hello World'
}
}
},
watch: {
'someObject': {
deep: true,
handler (value, oldValue) {
console.log('Something changed in someObject')
}
}
}
}
Когда обновляются данные?
Если вам нужно вызвать наблюдателя перед внесением новых изменений в объект, вам нужно использовать метод nextTick()
:
export default {
data() {
return {
foo: 'bar',
message: 'from data'
}
},
methods: {
action () {
this.foo = 'changed'
// If you juste this.message = 'from method' here, the watcher is executed after.
this.$nextTick(() => {
this.message = 'from method'
})
}
},
watch: {
foo () {
this.message = 'from watcher'
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow