I am currently updating my application from Vue.js 1 to Vue.js 2. I have a problem with the following function in my main component:
<script> export default { ready: function listenKeyUp() { window.addEventListener('keyup', this.handleKeyUp()); }, methods: { handleKeyUp(e) { if (e.keyCode === 27) { this.$router.go({ name: '/' }); } }, }, }; </script>
My console shows this error: 'window' is not defined
How is this possible? I do not understand the reason. How to fix it and why does this problem arise with the new version?
--- EDIT --- Some additional code:
main.js:
// Import plugins import Vue from 'vue'; import VueResource from 'vue-resource'; import VueI18n from 'vue-i18n'; // Import mixins import api from './mixins/api'; // Import router config import router from './router'; // Register plugins Vue.use(VueResource); Vue.use(VueI18n); Vue.mixin(api); // Go new Vue({ router, }).$mount('#app');
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>New website</title> <link rel="shortcut icon" href="/static/favicon.ico" /> <link rel="apple-touch-icon" href="/static/mobile.png"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> </head> <body> <div id="app"> <router-view></router-view> </div> <noscript> <div class="container"> <div class="col-sm-6 col-sm-offset-3"> <div class="alert alert-danger"> JavaScript is disabled in your web browser! </div> </div> </div> </noscript> </body> </html>
The main component:
<template> <div> <div class="container"> <header> HEADER HERE </header> </div> <div id="modal" v-if=" $route.name !== 'home' " transition="modal"> <div id="modal-bg" :to="{ name: 'home' }"></div> <div id="modal-container"> <div id="modal-header"> <h2>Modal</h2> <router-link id="modal-close" :to="{ name: 'home' }">X</router-link> </div> <router-view></router-view> </div> </div> <nav id="primary-navigation"> <div class="container-fluid"> <div class="row"> NAV HERE </div> </div> </nav> </div> </template> <script> </script> <style lang="scss"> </style>
Jordy source share