Vuejs v-for 多维数组json_object

Vuejs v-for multidimensional array json_object

我尝试使用 vueJS v-for 函数遍历多维 json_object。

但是我收到以下错误:

[Vue warn]: Error in render function: "TypeError: Cannot read property 'id' of null"

我的代码如下所示:

                    <tr v-for="timeblock in responseAPI">
                            <td>
                            {{timeblock.time}}
                            </td>
                            <td v-for="value in timeblock.appointment">
                            {{value.id}}
                            </td>
                            <td>
                            {{timeblock.break}}
                            </td>
                            <td>
                            {{timeblock.scheduled}}
                            </td>
                            <td>
                            {{timeblock.text}}
                            </td>
                        </tr>

我的 json_object 是这样的:

[
  {
    "time": "09:00",
    "break": null,
    "scheduled": "Stoel 1",
    "appointment": {
      "id": 1,
      "patient_id": 1,
      "chair_id": 1,
      "date": "2017-05-10",
      "time": "09:00:00",
      "duration": 30,
      "treatment_type": "Controle",
      "created_at": null,
      "updated_at": null
    },
    "text": null
  },
  {
    "time": "09:30",
    "break": null,
    "scheduled": "Stoel 1",
    "appointment": {
      "id": 2,
      "patient_id": 2,
      "chair_id": 1,
      "date": "2017-05-10",
      "time": "09:30:00",
      "duration": 30,
      "treatment_type": "Controle ",
      "created_at": null,
      "updated_at": null
    },
    "text": null
  } ]

您的 timeblock.appointment 不是数组,只是一个普通对象。尝试

<td>
  {{timeblock.appointment.id}}
</td>

当 v-for object 的值是每个键的值时,您不需要访问任何属性,因为该值不是 key/value 而只是值

  <td v-for="value in timeblock.appointment">
         {{value}}
    </td>

您的代码几乎是正确的,但您没有为第二个循环提供要读取的索引:这是错误。

只需 (timeblock, index) 读取您的索引,然后在第二个循环中使用您的 timeblock[index].appointment

<tr v-for="(timeblock,index) in responseAPI">
  <td>
    {{timeblock.time}}
  </td>
  <td v-for="value in timeblock[index].appointment">
    {{value.id}}
  </td>
  <td>
    {{timeblock.break}}
  </td>
  <td>
    {{timeblock.scheduled}}
  </td>
  <td>
    {{timeblock.text}}
  </td>
</tr>