我实际上是在使用Vuetify在Nuxt.js网站上的Jsons显示数据组成的项目中工作。我在布局中创建了一个选择器,以选择用户想要显示的Json。我需要从项目的所有不同页面访问此变量。
这是我的default.vue
样子:
<template>
<v-overflow-btn
:items="json_list"
label="Select an Json to display"
v-model="selected_json"
editable
mandatory
item-value="text"
></v-overflow-btn>
</template>
<script>
export default {
data() {
return {
selected_json: undefined,
json_list: [
{text: "first.json"},
{text: "second.json"},
],
}
}
}
</script>
我想从所有不同页面访问的变量是selected_json
。
我在互联网上看到很多东西,例如Vuex或一种包含将变量与URL传递在一起的解决方案。但是我有点像网络编程的新手(一个星期前开始使用Vue / Nuxt),我真的不太了解如何在我的项目中应用它。因此,如果有更简单的方法或一个很好的解释,我很感兴趣!
在此先感谢您的帮助 :)
使用Vuex,我们可以轻松实现您想要的。
首先,
index.js
在文件夹中创建一个文件store
(如果您没有store
文件夹,请在与pages, plugins, layouts etc
文件夹相同的目录中创建它)。然后将这段代码粘贴到index.js
通过这样做,我们设置了Vuex。更确切地说,只是
state
Vuex的一部分,如果您不知道,我们将存储您整个项目中可访问的数据。现在,我们必须将您的数据分配
default.vue
给Vuex。我们可以通过创建一个mutation
可以state
在Vuex中进行更改的函数来实现此目的。将此添加到您的index.js
这里的函数
setSelectedJson
接受两个参数,state
它们由Nuxt.js自动传递,并且包含我们所有的Vuex状态数据。selected_json
我们传入的第二个参数。现在在您中,
default.vue
我们需要添加watcher
for,selected_json
以便在更新时更新我们的Vuexselected_json
。我们快完成了。
我们需要做的最后一件事是制作一个
getter
用于从Vuex检索值的容器。这样的吸气剂将发挥作用。而已。
现在,您可以使用
selected_json
以下代码从Vuex 轻松访问所需的任何页面。