代码之家  ›  专栏  ›  技术社区  ›  Mukundhan

如何在vue js中传递要在道具中呈现的组件?

  •  -1
  • Mukundhan  · 技术社区  · 7 年前

    我有一个情况,我需要把数据单元

    其中tableprops包含所有列和dataprops。

    tableProps: {
      cols: [{
          cellProps: {
            class: "as"
          },
          cellRenderer: ((data) => {
            return <a onlick = {
              this.onDataClick
            }
            class = "btn btn-link" > {
              data.name
            } < /a>
          }).bind(this),
          dataKey: "name",
          dataType: String,
          label: "Name",
          sortable: true
        }       
      ],
      enableSelect: true,
      onPageChange: this.onPageChange,
      onSelect: (selectedRow) => console.log("selectedRow", selectedRow),
      onSelectAll: (data) => console.log("slectAllClick", data),      
      page: 0,
      rowProps: {
        onClick: (event, rowData) => {
          this.onClick(rowData);
        }
      },
      rowsPerPage: 5,
      title: "Nutrition"
    }
    

    有一个单元格呈现程序,可以在其中传递数据来呈现自定义数据,如按钮锚定等。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mukundhan    7 年前

    找到了解决方案,而不是发送函数,作用域插槽可用于呈现每个单元格的动态内容。谢谢你表现出兴趣。

    **Table.Vue(child, generic-table)**
    <table class="table table-bordered">
      <thead>
        <tr>
          <th v-for="col in options.cols" :key="col.id">
            <template v-if="col.colRenderer">
              {{col.colRenderer(col)}}
            </template>
            <template v-else>
              {{col.label}}
            </template>
          </th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="datum in data" :key="datum.id" @click="(e)=> options.rowProps.onClick ? options.rowProps.onClick(e, datum): ''">
          <td v-for="col in options.cols" :key="col.id" @click="()=> col.onClick ? col.onClick(datum[col.dataKey]): ''">
            <template v-if="col.cellSlot">
              <slot :name="col.cellSlot.name" :data="datum[col.dataKey]"/>
            </template>
            <template v-else>
              {{datum[col.dataKey]}}
            </template>
          </td>
        </tr>
      </tbody>
    </table>
    
    **Calling component(Parent, with Custom Data cells)**
    <v-table
      :name="carePlanName"
      :options="tableProps"
      :total-count="totalCount"
      :data="users" >      
        <div
          slot=""
          slot-scope="slotProps">
          <!-- Define a custom template for CellData Data -->
          <!-- `slotProps` to customize each todo.            -->
          <span v-if="slotProps">✓
            <button>{{ slotProps.name }}</button>
          </span>
        </div>
    </v-table>