簡體   English   中英

無法在 LWC 中制作表格

[英]Can't make table in LWC

我想做一個這樣的表:

在此處輸入圖像描述

我從 js 的頂點獲取了值,它看起來像這樣:

    @track data2 = [];
    @track data = [];
    testClick() {
        
        getExchangeRates({baseCurrency : this.defaultCurrency, dateFrom : this.dateFrom, dateTo : this.dateTo, value : this.defaultValue})
            .then(resultJSON => {
                let result = JSON.parse(resultJSON);
                
                console.log(result);
                console.log('////////');
                console.log(result.rates);

                let recordsByDates = result.rates;
                for (var key in recordsByDates) {
                    console.log(key);
                    let record = {
                        date : key,
                        USD : recordsByDates[key].USD,
                        CAD : recordsByDates[key].CAD,
                        EUR : recordsByDates[key].EUR,
                        GBP : recordsByDates[key].GBP
                    }
                    this.data.push(record);
                    this.data2 = JSON.stringify(this.data);
                }

                console.log(this.data);
                console.log(this.data2);

            })
            .catch(error => {
                this.error = error;
                console.log(error);
            });        
    }

在此處輸入圖像描述

我試圖制作一張桌子,但有些東西對我來說沒有用:

      <template for:each={data2} for:item="dat">
            <tr key={dat} onclick={testClick}>
                <td data-label="data2">
                    {dat.key}
                </td>
                <td data-label="data2">
                    {dat.value}
                </td>
            </tr>
        </template> 

請告訴我如何解決這個問題

代碼中有幾個問題:

  1. 沒有正確引用日期值
  2. 應該添加一個唯一的鍵,需要在 for:each

這是更新的代碼

for (var key in recordsByDates) {
    let record = {
        key: key,  // index of object can be used 
        date : recordsByDates[key].date,
        USD : recordsByDates[key].USD,
        CAD : recordsByDates[key].CAD,
        EUR : recordsByDates[key].EUR,
        GBP : recordsByDates[key].GBP
    }
}

  1. 在 HTML 中,您指的是錯誤的變量,它應該是 data,而不是 data2(已字符串化)。
  2. 這種類型的結構不需要基於表格的標簽,您可以使用 div 來更好地控制。

在 HTML 文件中,它應該是這樣的:

       <template for:each={data} for:item="dat">
            <div key={dat.key} onclick={testClick}>
                <div class="date-wrap">
                    Date: {dat.date}
                </div>
                <div class="value-wrap">
                    USD: {dat.USD}
                </div>
                <div class="value-wrap">
                    CAD: {dat.CAD}
                </div>
                <div class="value-wrap">
                    EUR: {dat.EUR}
                </div>
                <div class="value-wrap">
                    GBP: {dat.GBP}
                </div>
            </div>
        </template> 

此外,您可以在數據變量中創建一個嵌套的對象數組,這有助於使結構更加通用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM