Heim  >  Artikel  >  Web-Frontend  >  So stellen Sie den Tisch in Vue so ein, dass er mit zunehmendem Inhalt länger wird

So stellen Sie den Tisch in Vue so ein, dass er mit zunehmendem Inhalt länger wird

王林
王林Original
2023-05-24 12:31:39626Durchsuche

Als eines der beliebtesten Frameworks in der Frontend-Entwicklung eignet sich Vue.js sehr gut für die schnelle Erstellung dynamischer, interaktiver Webanwendungen. Unter diesen ist die Notwendigkeit, Daten in Tabellen anzuzeigen, weit verbreitet, aber auch die Frage, wie Tabellen bei zunehmendem Inhalt flexibler gestaltet werden können, ist ein Thema, das es wert ist, untersucht zu werden.

In Vue.js können wir viele verschiedene Möglichkeiten verwenden, um die Tabelle so einzustellen, dass sie mit zunehmendem Inhalt länger wird, einschließlich der Verwendung dynamischer Stile, der Verwendung berechneter Eigenschaften und des Abhörens von Datenänderungen. Als Nächstes werden in diesem Artikel die spezifischen Implementierungs- und Verwendungsszenarien dieser Methoden im Detail vorgestellt.

1. Verwenden Sie dynamische Stile

Eine gängige Methode, um die Tabelle mit dem Inhalt wachsen zu lassen, ist die Verwendung dynamischer Stile. Die spezifische Implementierungsmethode besteht darin, ein Container-Div außerhalb der Tabelle einzuschließen und dann die Höhe des Container-Div in der Vue-Komponente entsprechend der Höhe der Tabelle und Änderungen im Inhalt festzulegen, um den Effekt zu erzielen, dass die Tabelle länger wird mit dem Inhalt.

Hier ist ein einfaches Beispiel:

<template>
  <div class="table-wrapper">
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in list" :key="index">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.gender }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { name: "张三", age: 20, gender: "男" },
        { name: "李四", age: 22, gender: "女" },
        { name: "王五", age: 18, gender: "男" }
      ]
    };
  },
  mounted() {
    this.computeTableHeight();
  },
  methods: {
    computeTableHeight() {
      const table = document.querySelector(".table-wrapper table");
      const wrapper = document.querySelector(".table-wrapper");
      const height = table.clientHeight;
      wrapper.style.height = `${height}px`;
    }
  }
};
</script>

<style>
.table-wrapper {
  overflow-y: auto;
  max-height: 400px;
}
</style>

Im obigen Beispiel wickeln wir einen Container .table-wrapper außerhalb der Tabelle ein und legen die maximale Höhe des Containers auf 400 Pixel fest. In der montierten Hook-Funktion der Vue-Komponente berechnen wir die Höhe der Tabelle und legen die Höhe des Containers fest, damit die Tabelle mit zunehmendem Inhalt länger wird. .table-wrapper,并且设置了容器的最大高度为 400px。在 Vue 组件的 mounted 钩子函数中,我们通过计算表格的高度并设置容器的高度,来让表格随内容的增加变长。

需要注意的是,采用这种方式需要避免过多的计算,否则可能会降低页面的性能。

二、使用计算属性

另一种让表格随内容变长的方法是使用计算属性。这种方式通常适用于表格数据变化比较频繁的场景,通过动态计算表格的高度,来让表格随内容变长。

下面是一个示例(假设 list 中的数据会动态变化):

<template>
  <div class="table-wrapper" :style="{ height: tableHeight + 'px' }">
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in list" :key="index">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.gender }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { name: "张三", age: 20, gender: "男" },
        { name: "李四", age: 22, gender: "女" },
        { name: "王五", age: 18, gender: "男" }
      ]
    };
  },
  computed: {
    tableHeight() {
      const table = document.querySelector(".table-wrapper table");
      const height = table ? table.clientHeight : 0;
      return height;
    }
  }
};
</script>

<style>
.table-wrapper {
  overflow-y: auto;
  max-height: 400px;
}
</style>

在上面这个示例中,我们使用了计算属性 tableHeight 来动态计算表格的高度,然后在容器 div 的样式中使用 :style="{ height: tableHeight + 'px' }"

Es ist zu beachten, dass bei der Verwendung dieser Methode übermäßige Berechnungen vermieden werden müssen, da sonst die Leistung der Seite beeinträchtigt werden kann.

2. Berechnete Eigenschaften verwenden

Eine andere Möglichkeit, die Tabelle mit dem Inhalt zu vergrößern, besteht darin, berechnete Eigenschaften zu verwenden. Diese Methode eignet sich normalerweise für Szenarien, in denen sich Tabellendaten häufig ändern. Durch die dynamische Berechnung der Tabellenhöhe kann die Tabelle mit dem Inhalt länger werden.

Das Folgende ist ein Beispiel (unter der Annahme, dass sich die Daten in der Liste dynamisch ändern):

<template>
  <div class="table-wrapper" :style="{ height: tableHeight + 'px' }">
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>性别</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in list" :key="index">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.gender }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: [
        { name: "张三", age: 20, gender: "男" },
        { name: "李四", age: 22, gender: "女" },
        { name: "王五", age: 18, gender: "男" }
      ]
    };
  },
  computed: {
    tableHeight() {
      const table = document.querySelector(".table-wrapper table");
      const height = table ? table.clientHeight : 0;
      return height;
    }
  },
  watch: {
    list() {
      this.$nextTick(() => {
        this.computeTableHeight();
      });
    }
  },
  mounted() {
    this.computeTableHeight();
  },
  methods: {
    computeTableHeight() {
      const table = document.querySelector(".table-wrapper table");
      const wrapper = document.querySelector(".table-wrapper");
      const height = table.clientHeight;
      wrapper.style.height = `${height}px`;
    }
  }
};
</script>

<style>
.table-wrapper {
  overflow-y: auto;
  max-height: 400px;
}
</style>

Im obigen Beispiel verwenden wir die berechnete Eigenschaft tableHeight, um die Höhe der Tabelle dynamisch zu berechnen. und fügen Sie es dann dem Container div hinzu. Verwenden Sie :style="{ height: tableHeight + 'px' }", um berechnete Eigenschaften im Stil zu binden, damit die Tabelle mit dem Inhalt länger wird.

Es ist zu beachten, dass Sie bei Verwendung dieser Methode sicherstellen müssen, dass der Berechnungsumfang der berechneten Attribute angemessen ist, um übermäßige Berechnungen zu vermeiden, die zu einer Verschlechterung der Seitenleistung führen.

3. Datenänderungen überwachen

Die letzte Möglichkeit, die Tabelle mit dem Inhalt zu vergrößern, besteht darin, Datenänderungen zu überwachen. Insbesondere überwacht es Änderungen im Listenarray und berechnet dann die Höhe der Tabelle neu, wenn sich die Daten ändern, sodass die Tabelle mit zunehmendem Inhalt länger wird. 🎜🎜Hier ist ein Beispiel: 🎜rrreee🎜In diesem Beispiel hören wir auf Änderungen im Listenarray, berechnen dann die Höhe der Tabelle neu, wenn sich die Daten ändern, und legen die Höhe des Containers fest, um den Effekt des Tabellenwachstums zu erzielen länger mit dem Inhalt. 🎜🎜Der Vorteil dieser Methode besteht darin, dass sie relativ einfach ist und nicht zu viele Berechnungen erfordert. Allerdings muss auch berücksichtigt werden, dass eine zu große Datenmenge einen gewissen Einfluss auf die Leistung hat. 🎜🎜Zusammenfassend sind die oben genannten drei Möglichkeiten, die Tabelle mit zunehmendem Inhalt länger zu machen. Welche Methode sollte entsprechend der tatsächlichen Situation und den Anforderungen ausgewählt werden? Unabhängig davon, welche Methode verwendet wird, besteht der Zweck darin, die Seite flexibler, benutzerfreundlicher, schöner und effizienter zu gestalten. 🎜

Das obige ist der detaillierte Inhalt vonSo stellen Sie den Tisch in Vue so ein, dass er mit zunehmendem Inhalt länger wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn