如何在Vue.js中将更改后的值传递给其他组件的方法?

如何在Vue.js中将更改后的值传递给其他组件的方法?,vue.js,vuejs2,Vue.js,Vuejs2,在header组件中,我们称之为App.vue,其中有一个select元素: <select v-model="locale"> <option value="en">English</option> <option value="pl">Polski</option> </select> 我如何通知其他组件的同级,而不是子组件,比如Users.vue,locale参数已更改?我想使用JS方法而不是绑定DOM元素来获取

在header组件中,我们称之为App.vue,其中有一个select元素:

<select v-model="locale">
 <option value="en">English</option>
 <option value="pl">Polski</option>
</select>

我如何通知其他组件的同级,而不是子组件,比如Users.vue,locale参数已更改?我想使用JS方法而不是绑定DOM元素来获取代码中的新值。由于更改了区域设置,新值应触发页面重新加载。我应该使用Users.vue的观察者、道具,还是有其他方法?

vue有一种方法可以做到这一点,事件总线这里有一个来自文档的链接,告诉您如何做到这一点

您也可以参考这篇有用的文章

它可能看起来像这样

var bus = new Vue()
// in component A's method
bus.$emit('language-change', 'en')
// in component B's created hook
bus.$on('language-change', function (language) {
  // ...
})

一个想法是使用根组件来管理两个对等方之间的通信,使您的页面看起来像这样:


这能回答你的问题吗?

也许考虑使用总线来进行数据同步,或者使用VUEX
var bus = new Vue()
// in component A's method
bus.$emit('language-change', 'en')
// in component B's created hook
bus.$on('language-change', function (language) {
  // ...
})