【问题标题】:Vuejs appending html after click on elementVuejs在单击元素后附加html
【发布时间】:2018-03-17 10:26:15
【问题描述】:

我有一个表格,里面有来自 json 的数据。那么我如何在单击元素后追加一个新元素?

        <tbody>
          <tr v-for="f in firm" class="main" >
            <td id="ccc">{{ f.name.toUpperCase() }}</td>
            <td>{{ f.open }}</td>
            <td>{{ f.max }}</td>
            <td>{{ f.min }}</td>
            <td>{{ f.close }}</td>
            <td>{{ f.change }}</td>
            <td>{{ f.trans }}</td>
            <td>{{ f.vol }}</td>
          </tr>
        </tbody>

这段代码为我创建了带有数据的表格现在我想单击一个元素,然后在该元素之后附加新的 tr。我尝试创建方法,但我的每一个想法都失败了

【问题讨论】:

    标签: javascript vue.js vuejs2


    【解决方案1】:

    如果您更改 HTML 正在呈现的数据,HTML 将自动更新。由于代码为firm 数组中的每个项目呈现&lt;tr&gt;,因此将一个项目添加到firm 数组以创建一个新的&lt;tr&gt;。请参阅下面的演示。

    new Vue({
      el: '#app',
      data: {
        firm: []
      },
      methods: {
        addRow() {
          this.firm.push({
            name: 'new row',
            open: 'open',
            max: 'max',
            min: 'min',
            close: 'close',
            change: 'change',
            trans: 'trans',
            vol: 'vol',
          })
        }
      }
    })
    <div id="app">
      <button @click="addRow">Add new row</button>
      <table>
        <tbody>
          <tr v-for="f in firm" class="main">
            <td id="ccc">{{ f.name.toUpperCase() }}</td>
            <td>{{ f.open }}</td>
            <td>{{ f.max }}</td>
            <td>{{ f.min }}</td>
            <td>{{ f.close }}</td>
            <td>{{ f.change }}</td>
            <td>{{ f.trans }}</td>
            <td>{{ f.vol }}</td>
          </tr>
        </tbody>
      </table>
    </div>
    <script src="https://unpkg.com/vue"></script>

    【讨论】:

    • 好的,但是如果我想用自定义 做广告,例如
    • 为您的数据添加适当的属性,可能是firm 数组中每个项目的colspan 属性,然后让您的模板访问该属性,例如&lt;td :colspan="f.colspan"&gt;...&lt;/td&gt;
    猜你喜欢
    • 2017-11-20
    • 2011-05-25
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2019-05-19
    相关资源
    最近更新 更多