- 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!
- Python編程自學手冊
- Java應用與實戰
- 密碼學原理與Java實現
- 簡單高效LATEX
- HDInsight Essentials(Second Edition)
- QGIS By Example
- C語言程序設計教程
- MATLAB 2020從入門到精通
- 交互式程序設計(第2版)
- 深度學習程序設計實戰
- 深入淺出 HTTPS:從原理到實戰
- HTML5 WebSocket權威指南
- Elastix Unified Communications Server Cookbook
- Pandas 1.x Cookbook
- Building Web and Mobile ArcGIS Server Applications with JavaScript(Second Edition)