Это проблема с использованием функции стрелки.Хотя синтаксис () => {}
выглядит лучше, чем function() {}
, есть различие в том, что функция стрелки использует лексический контекст для this
(откуда он был определен, а не из того места, где он был вызван, какой идентификаторв этом случае вам нужно), то есть this
больше не является экземпляром Vue, поэтому вы не можете использовать this.$bus
.Вы можете исправить это, заменив функцию стрелки обычной функцией, используя либо created: function() {...
, либо краткую (но функционально эквивалентную) версию created() {...
Подробнее о различиях можно узнать, просмотрев статьи на es6, arrow functions, lexical scope, this context
.
код main.js:
import Vue from "vue";
import App from "./App";
Vue.prototype.$bus = new Vue();
new Vue({
el: "#app",
components: { App },
template: "<App/>"
});
где-то в app.js
export default {
name: "App",
created() {
console.log(this.$bus);
}
};