- Full-Stack Vue.js 2 and Laravel 5
- Anthony Gore
- 259字
- 2021-07-02 19:57:23
Watchers
So, how can we add/remove classes from thebodyif it's out of Vue's dominion? We'll have to do it the old-fashioned way with the browser's Web API. We need to run the following statements when the modal is opened or closed:
// Modal opens document.body.classList.add('modal-open'); // Modal closes document.body.classList.remove('modal-closed');
As discussed, Vue adds reactive getters and setters to each data property so that when data changes it knows to update the DOM appropriately. Vue also allows you to write custom logic that hooks into reactive data changes via a feature calledwatchers.
To add a watcher, first add thewatchproperty to your Vue instance. Assign an object to this where each property has the name of a declared data property, and each value is a function. The function has two arguments: the old value and new value.
Whenever a data property changes, Vue will trigger any declared watcher methods:
var app = new Vue({ el: '#app' data: { message: 'Hello world' }, watch: { message: function(newVal, oldVal) { console.log(oldVal, ', ', newVal); } } }); setTimeout(function() { app.message = 'Goodbye world'; // Output: "Hello world, Goodbye world"; }, 2000);
Vue can't update thebodytag for us, but it can trigger custom logic that will. Let's use a watcher to update thebodytag when our modal is opened and closed.
app.js:
var app = new Vue({ data: { ... }, watch: { modalOpen: function() { var className = 'modal-open'; if (this.modalOpen) { document.body.classList.add(className); } else { document.body.classList.remove(className); } } } });
Now when you try to scroll the page you'll see it won't budge!
- Learning Java Functional Programming
- 數(shù)據(jù)庫程序員面試筆試真題與解析
- Microsoft Application Virtualization Cookbook
- Android開發(fā)精要
- Vue.js快跑:構建觸手可及的高性能Web應用
- Podman實戰(zhàn)
- Python數(shù)據(jù)分析(第2版)
- Vue.js 2 Web Development Projects
- Getting Started with Nano Server
- 平面設計經(jīng)典案例教程:CorelDRAW X6
- Python 3 數(shù)據(jù)分析與機器學習實戰(zhàn)
- scikit-learn Cookbook(Second Edition)
- 大規(guī)模語言模型開發(fā)基礎與實踐
- 信息學奧林匹克競賽初賽精講精練
- Mastering React Test:Driven Development