如何将值从App.vue传递给main.js

时间:2017-06-13 08:03:06

标签: vue.js vuejs2

我目前正在尝试在vue js中实现本地化。以下是main.js中的代码。

var lang = localStorage.getItem('locale') ? localStorage.getItem('locale') : '';
if (lang === '') {
    lang = 'en';
    localStorage.setItem('locale', lang);
}

App.vue页面上会有两个标记图像。每当我点击标志时,都会触发一个函数changeLocale()。这是用App.vue

写的
methods : {
        changeLocale : function(ln){
          console.log(ln);
        }
    },

现在,从App.vue我需要更改lan

中变量main.js的值

有人可以帮我这样做吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

这取决于你在main.js中的内容。 如果你没有那里的vue实例,一个想法是使用事件总线。

在第三个文件中,' bus.js':

const bus = new Vue();
module.exports = bus;

在App.vue中:

const bus = require('./bus.js');

// in methods:
changeLocale : function(ln) {
    bus.$emit('localeChanged', ln);
}

在main.js中:

const bus = require('./bus.js');
bus.$on('localeChanged', (locale) => {
    console.log('locale has changed, and its ' + locale);
});

请参阅:https://vuejs.org/v2/guide/components.html#Non-Parent-Child-Communication