【问题标题】:Vue.js + Firebase - How to display deeply nested DatabaseVue.js + Firebase - 如何显示深度嵌套的数据库
【发布时间】:2017-08-28 11:20:22
【问题描述】:

这是我在这里的第一个问题,因为 让我发疯。 我正在尝试使用 firebase 和 vue.js 循环通过我的数据库(键值)构造。

下面是我导出的 json:

{  
   "city":{  
      "new york":{  
         "zipcode":{  
            "10039":{  
               "street":{  
                  "W 152nd St":[  
                     "263",
                     "250",
                     "21"
                  ]
               }
            },
            "02116":{  
               "street":{  
                  "W 155nd St":[  
                     "3",
                     "25",
                     "21"
                  ]
               }
            }
         }
      },
      "boston":{  
         "zipcode":{  
            "02116":{  
               "street":{  
                  "Berkeley St":[  
                     "161",
                     "65",
                     "13"
                  ]
               }
            }
         }
      }
   }
}

我还应该告诉你什么?我认为这种结构可以帮助我生成一个四分割的依赖下拉列表,例如 [city [v]] [zipcode [v]] [street [v]] [number [v]]。

提前感谢您的时间和帮助。

编辑:

<div v-for="location in test">
    <div v-for="(address,city) in location">
        <div v-for="(nextplz,plzLabel) in address">
            <div v-for="(nextstreet,plz) in nextplz">
                <div v-for="(streetInfo,streetLabel) in nextstreet">
                    <div v-for="(numbers,streetName) in streetInfo">
                        {{location['.key']}} : {{city}}<br/>
                        {{plzLabel}} : {{plz}}<br/>
                        {{streetLabel}} : {{streetName}}<br/>
                        {{numbers}}<hr/>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Edit-2:修复了 json 中的缩进和拼写错误

【问题讨论】:

  • 如果你发布你的 vue 组件会很有帮助
  • 好吧 - 我不会把它称为一个组件,更像是一种读取一些数据的骇人听闻的方法。我正在编辑主题,因为我的答案太长了。

标签: javascript firebase firebase-realtime-database vue.js vuejs2


【解决方案1】:

我假设test 是一个位置数组,并且位置对象看起来像您发布的 JSON。通常你使用 v-for 来迭代数组而不是对象(虽然你可以),来访问你使用 '.' 的对象属性。符号,所以你可以试试这个:

<div v-for="location in test">
  {{location.address.nextplz.nextstreet.streetInfo}}
  {{location.address.plzLabel}}
</div>

如果你想走遍所有城市,你可以这样做:

<div v-for="location in test">
  <div v-for="(key,val) in location.city">
    <!-- display the zipcode object for each city -->
    <pre>{{city[key].zipcode}}</pre>
  </div>
</div>

【讨论】:

  • 感谢这种方法 - 基本上你是对的。现在由我决定 :) 我会保持更新。
猜你喜欢
  • 2018-03-19
  • 1970-01-01
  • 2011-11-22
  • 2019-10-01
  • 2020-03-11
  • 1970-01-01
  • 2017-06-27
  • 2018-06-17
  • 2016-05-09
相关资源
最近更新 更多