Das Header-Array der Vuetify-Datentabelle akzeptiert keine leeren Unterzuordnungen
P粉928591383
P粉928591383 2024-03-27 17:30:37
0
1
483

Ich habe eine Datentabelle mit Vuetify, die die Eigenschaft localAuthority von einem Rails-Backend übergibt. Alles funktioniert einwandfrei, bis ich eine leere untergeordnete Zuordnung (verschachteltes Attribut) übergebe. In diesem Fall „Landkreis“:

<script>
  import axios from "axios";
  export default {
    name: 'LocalAuthorityIndex',
    props: {
      localAuthorities: {type: Array, default: () => []},
      counties: {type: Array, default: () => []},
      localAuthorityTypes: {type: Array, default: () => []}
    },
    data() {
      return{
        search: '',
        dialog: false,
        testmh: 'hello',
        dialogDelete: false,      
        headers: [
          { text: 'Name', align: 'start', value: 'name' },
          { text: 'ONS Code', value: 'ons_code' },
          { text: 'ID', value: 'id' },
          { text: 'Population', value: 'population' },
          { text: 'county', value: 'county.name' },
          { text: 'Website', value: 'website' },
          { text: 'Actions', value: 'actions', sortable: false },
        ],

Im obigen Beispiel funktioniert es also, solange alle Datensätze Kreiszugehörigkeiten haben (belongs_to). Wenn einem Datensatz jedoch kein „Landkreis“ zugeordnet ist, erhalten Sie die folgende Fehlermeldung:

[Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading 'name')"

Ich habe viele Möglichkeiten ausprobiert, zum Beispiel das Hinzufügen von bedingten Anweisungen wie dieser:

{ text: 'county', value: ('county.name' ? 'county.name' : nil )},

Aber nichts scheint zu funktionieren.

P粉928591383
P粉928591383

Antworte allen(1)
P粉459440991

根据 Codepen 上的 <v-data-table> 代码,我发现您正在用自己的代码覆盖默认的表项插槽。

您的错误来自这部分代码:

...

...

看一下第一个字符串。 #item.county.namev-slot:item.county.name 的缩写形式,来自 headers 数组中的字符串之一:

...
{ text: 'county', value: 'county.name' },

所以没有错误,即使您的item不包含任何county,这部分也会被vuetify库正确解析。

错误出现在上述代码的第三个字符串中。您正在尝试打印county名称而不检查其是否存在。这就是为什么您收到 ...无法读取未定义的属性... 错误。

我想你可以这样解决你的问题:

当然,如果您需要在这种情况下隐藏县链接,您也可以将 v-if (或 v-show)添加到 a 标签中。

我还使用一些静态数据创建了一个小型Codepen。看看这个 Playground 中的 item.name.text 槽,也许它会帮助你理解类似的对象关联。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage