如何使用 json 原始数据在 vuejs 中制作依赖的第二个列表?

Posted

技术标签:

【中文标题】如何使用 json 原始数据在 vuejs 中制作依赖的第二个列表?【英文标题】:how to make dependent second list in vuejs using json raw data? 【发布时间】:2021-08-31 06:46:36 【问题描述】:

所以我将州和地区列表存储在 .json 文件中。 我可以在第一个菜单中显示州列表,但无法在第二个下拉菜单中显示所选州的地区列表。

"locations":[  
   
    "state":"Andhra Pradesh",
    "districts":[  
       "Anantapur",
       "Chittoor",
       "East Godavari",
       "Guntur",
       "Krishna",
       "Kurnool",
       "Nellore",
       "Prakasam",
       "Srikakulam",
       "Visakhapatnam",
       "Vizianagaram",
       "West Godavari",
       "YSR Kadapa"
    ]
 ,
   
    "state":"Arunachal Pradesh",
    "districts":[  
       "Tawang",
       "West Kameng",
       "East Kameng",
       "Papum Pare",
       ........

我如何带来一个特定地区的列表?

<b-form-input
                  list="my-list-id-2"
                  v-model="memorial.location1"
                  required
                  :placeholder="$t('placeholdersMemorial.location1')"
                ></b-form-input>
                <datalist id="my-list-id-2">
                  <option v-for="location in $t('locations')" :key="location"> location.state </option>
                </datalist>
              </b-form-group>
            </b-col>

上面是我的第一个框,它列出了状态。

 <b-row class="justify-content-center">
           <b-col cols="8" sm="8">
              <b-form-group
                :label="$t('addMemorialForm.location2')"
              >
                <b-form-input
                  list="my-list-id-2b"
                  v-model="memorial.location2"
                   v-if="memorial.location1"
                  required
                  :placeholder="$t('placeholdersMemorial.location2')"
                ></b-form-input>
                <datalist id="my-list-id-2b">
                  <option v-for="location in $t('locations')" :key="locations"> locations.districts </option>
                </datalist>
              </b-form-group>
            </b-col>

上面是第二个盒子。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

在这种情况下,您可以将区域数组添加为计算属性:

  computed: 
    availableDistricts () 
      if (this.memorial.location1) 
        const selectedState = this.$t('locations').find(loc => loc.state === this.memorial.location1);
        return selectedState.districts;
       else 
        return [];
      
    
  ,

然后像这样使用它:

   <datalist id="my-list-id-2b">
        <option v-for="district in availableDistricts" :key="district">district</option>
   </datalist>

【讨论】:

@redtape52 对不起,我在第二个 v-for 中犯了一个错误。请再检查一遍 不,它现在也不起作用。你能看看这里吗? codesandbox.io/s/wispy-waterfall-f4o85?file=/src/components/… @redtape52 好的,现在我明白了。再次检查答案,我修改了它 欢呼它可以工作,但是这个计算函数基本上是获取选定状态的索引值,然后它用它来获取区域的数组然后传递它?

以上是关于如何使用 json 原始数据在 vuejs 中制作依赖的第二个列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在表vuejs中显示json

如何使用 vueJS 在内部数组中显示 JSON 数据?

在 vuejs 中不使用导入使 JSON 从页面可见

如何在VueJS中使用v-on:change并发送参数以使用axios获取更新JSON数据

我应该使用原始 js 还是 jquery 来定位 Vuejs 3 应用程序中的 DOM 元素?

在 Vuejs 中使用静态 JSON 进行动态路由