首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于具有多个tbody的表的Vue.Draggable

用于具有多个tbody的表的Vue.Draggable
EN

Stack Overflow用户
提问于 2018-01-31 11:15:20
回答 1查看 3.1K关注 0票数 2

我有一张结构复杂的桌子。我的表的真正结构要困难得多。我试着用一个简单的例子来说明它。

代码语言:javascript
复制
<table>
    <thead>
        <th>id</th>
        <th>name</th>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr colspan="2">
            <td>1</td>
        </tr>
    </tbody>
    <tbody>
        <tr>
            <td>1</td>
            <td>1</td>
        </tr>
        <tr colspan="2">
            <td>1</td>
        </tr>
    </tbody>
</table>

我使用vuejs,并且我需要有可排序的表(我使用vuedraggable组件https://github.com/SortableJS/Vue.Draggable)。

我有像这样的模板的项目组件。

代码语言:javascript
复制
<template>
    <tbody class="item">
        <tr>
            <td>{{ item.id }}</td>
            <td>{{ item.name }}</td>
        </tr>
        <tr colspan="2">
            <td>{{ item.description }}</td>
        </tr>
    </tbody>
</template>

我在draggable中使用它。

代码语言:javascript
复制
<draggable v-model="items" :element="'table'" :options="{draggable: '.item'}">
    <item-component v-for="(item, index) in items" :item="item" :key="item.id">
    </item-component>
</draggable>

可拖动组件创建外部'table‘元素。一切正常,但是我如何添加'thead‘呢?

我尝试再创建一个组件- items:

代码语言:javascript
复制
<template>
    <table>
        <thead>
            <th>1</th>
            <th>2</th>
        </thead>
        <slot></slot>
    </table>    
</template>

但这是行不通的:

代码语言:javascript
复制
<draggable v-model="items" :element="items-component" :options="{draggable: '.item'}">
    <item-component v-for="(item, index) in items" :item="item" :key="item.id">
    </item-component>
</draggable>
EN

回答 1

Stack Overflow用户

发布于 2018-01-31 19:32:38

由于VueDraggable是一个自定义组件,当使用DOM作为模板时,例如。table你会受到一些固有的限制,因为Vue只能在浏览器解析和规范化了模板内容之后才能检索它。

这将导致在使用具有此类限制的元素的自定义组件时出现问题

一种解决方法是使用is特殊属性:

https://vuejs.org/v2/guide/components.html#DOM-Template-Parsing-Caveats

代码语言:javascript
复制
<table>
  <thead>
    <th>1</th>
    <th>2</th>
  </thead>
<div is="draggable" element="div" v-model="items">
  <tbody v-for="i in items">
    <tr>
      <td>{{i.id}}</td>
      <td>{{i.name}}</td>
    </tr>
     <tr colspan="2">
        <td>{{ item.description }}</td>
    </tr>
  </tbody>
</div>
</table>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48533878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档