【问题标题】:Vue JS 2 table viewing complete objects instead of valuesVue JS 2 表格查看完整对象而不是值
【发布时间】:2018-07-06 01:49:03
【问题描述】:

我对 Vue JS 2 还是很陌生。我正在构建一个动态表,其中列(和列标题)的数量将根据分配给它的数组而波动。这意味着我不能做这样的事情

<td>{{assignments.name}}</td>
<td>{{assignments.id}}</td>
<td>{{assignments.location}}</td>

因为数据会发生变化,并不总是相应地匹配。在设置 API 之前,我会从硬编码的 JSON 中提取:

[
{
  "Name": "Jennison",
  "ID": 879456,
  "Location": "Carotsville"
},
{
  "Name": "Cordan",
  "ID": 547932,
  "Location": "Paperville"
},
{
  "Name": "Sir Mac",
  "ID": 423971,
  "Location": "Hammerville"
},
{
  "Name": "Pat",
  "ID": 984123,
  "Location": "Isenville"
}
]

以下是我正在努力解决的标记。它不是抓取每个值,而是抓取每个对象。为了正确填充表格,我需要做什么才能让它获取值?

<table class="table table-striped table-bordered table-sm table-hover">
  <thead>
    <tr>
      <th v-for="(value, key) in assignmentsHardcoded[0]" v-bind:key="value">{{key}}</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td v-for="assignments in assignmentsHardcoded" v-bind:key="assignments.id">{{ assignments }}</td>
    </tr>
  </tbody>
</table>

这是结果:

为了正确填充表格,我需要做什么才能让它获取值?

【问题讨论】:

  • 我可能会公开一个键数组的computed 属性,然后您可以遍历那个。您想循环遍历assignmentsHardcodedtrs,然后循环遍历tds 的键数组。
  • @jonrsharpe 计算属性将是一个好主意,但并不是真正需要的,因为您可以在没有计算属性的情况下管理相同的结果,但基本上是相同的模板结构。查看我的回答了解更多信息
  • @Derek 对象顺序无法保证,您不一定会在正确的列中获得正确的值
  • @jonrsharpe - 即使这是一个问题,OP 也可以遍历数组属性的第一个元素并使用它们,仍然不需要计算属性

标签: javascript json html-table vuejs2


【解决方案1】:

这应该可以解决问题:

<table class="table table-striped table-bordered table-sm table-hover">
  <thead>
    <tr>
      <th 
        v-if="assignmentsHardcoded.length" 
        v-for="(value, key) in assignmentsHardcoded.find(a=>true)" 
        :key="value">
        {{key}}
      </th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="(assignment, i) in assignmentsHardcoded" :key="'a-'+i">
      <td v-for="attr in assignment">{{ attr }}</td>
    </tr>
  </tbody>
</table>

您遇到的问题是您在 td 上循环,这只有在您希望所有数据都显示在一行时才有效。

考虑到通常情况并非如此,将v-for 提升到&lt;tr&gt; 标签是有意义的,这样我们就可以在&lt;td&gt; 上的v-for 中使用它,因为属性可以不同并且我们不想陷入对数据结构进行硬编码的地方。

【讨论】:

  • 感谢您的帮助,但正如我所提到的,阵列会波动。我正在努力使这种动态化。它并不总是名称、ID 和位置。我需要它来提取任何值,而无需预先定义它们。
  • 效果很好,谢谢!我什至没有想到我可以这样做,但现在对我来说很有意义。
  • @PorterLyman 很高兴我能帮上忙!抱歉,我一开始一定错过了关于无法使用正确名称的部分
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2022-01-24
  • 2015-02-11
  • 2022-08-24
  • 1970-01-01
  • 2020-06-11
相关资源
最近更新 更多