javascript - 输入文本时,具有可扩展行的 Vuetify 数据表会崩溃

标签 javascript vue.js vuejs2 vuetify.js

当我单击并展开行时,我添加了输入字段,当我尝试将任何值输入到字段中时,行会折叠。

这是我的代码:

new Vue({
  el: '#app',
  data () {
    return {
      headers: [
        {
          text: 'Dessert (100g serving)',
          align: 'left',
          sortable: false,
          value: 'name'
        },
        { text: 'Calories', value: 'calories' },
        { text: 'Fat (g)', value: 'fat' },
        { text: 'Carbs (g)', value: 'carbs' },
        { text: 'Protein (g)', value: 'protein' },
        { text: 'Sodium (mg)', value: 'sodium' },
        { text: 'Calcium (%)', value: 'calcium' },
        { text: 'Iron (%)', value: 'iron' }
      ],
      items: [
        {value: false, name: 'Frozen Yogurt', calories: 159, fat: 6.0, carbs: 24, protein: 4.0, sodium: 87, calcium: '14%', iron: '1%'},
        {value: false, name: 'Ice cream sandwich', calories: 237, fat: 9.0, carbs: 37, protein: 4.3, sodium: 129, calcium: '8%', iron: '1%'}
      ]
    }
  }
})
<link rel="stylesheet" href="https://unpkg.com/vuetify@0.17.7/dist/vuetify.min.css">
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet" type="text/css">

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@0.17.7/dist/vuetify.min.js"></script>

<div id="app">
    <v-app id="inspire">
      <v-data-table
        :headers="headers"
        :items="items"
        hide-actions
        item-key="name"
      >
        <template slot="items" slot-scope="props">
          <tr @click="props.expanded = !props.expanded">
            <td>{{ props.item.name }}</td>
            <td class="text-xs-right">{{ props.item.calories }}</td>
            <td class="text-xs-right">{{ props.item.fat }}</td>
            <td class="text-xs-right">{{ props.item.carbs }}</td>
            <td class="text-xs-right">{{ props.item.protein }}</td>
            <td class="text-xs-right">{{ props.item.sodium }}</td>
            <td class="text-xs-right">{{ props.item.calcium }}</td>
            <td class="text-xs-right">{{ props.item.iron }}</td>
          </tr>
        </template>
        <template slot="expand" slot-scope="props">
          <v-card flat>
            <v-card flat="flat" color="grey lighten-4">
              <v-container fluid="fluid" grid-list-xl="grid-list-xl">
                <v-layout row="row" wrap="wrap">
                  <v-flex sm3="sm3">
                    <v-text-field label="Calories" v-model="props.item.name"></v-text-field>
                  </v-flex>
                  <v-flex sm3="sm3">
                    <v-text-field label="Calories" v-model="props.item.calories"></v-text-field>
                  </v-flex>
                </v-layout>
              </v-container>
            </v-card>
          </v-card>
        </template>
      </v-data-table>
    </v-app>
  </div>

这是我的代码笔的链接,与上面的代码相同。 https://codepen.io/syed-haroon/pen/vdGExX

最佳答案

我的问题的答案,有点乱,问题是由于 item-key,这是我所做的:

// Changing from:
<v-data-table :headers="headers" :items="items" item-key="name">

// Changed to:
<v-data-table :headers="headers" :items="items" item-key="dummyIndexFixForCollapseIssue">

// in `data` using generated random value for 
data () {
  return {
    items: [
      {dummyIndexFixForCollapseIssue: this.generateRandomNumber(), name: 'Frozen Yogurt', calories: 159},
      {dummyIndexFixForCollapseIssue: this.generateRandomNumber(), name: 'Ice cream sandwich', calories: 237}
    ]
  }
}

// here is the `method` to generating random value 
methods: {
  generateRandomNumber () {
    return Number(Math.floor(Math.random() * 90000) + 10000)
  }
}

关于javascript - 输入文本时,具有可扩展行的 Vuetify 数据表会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48600961/

相关文章:

javascript - 根据复选框隐藏/显示表行

typescript - "ReferenceError: process is not defined"尝试在 vue 组件中使用 proto-loader 和 grpc-js 加载 grpc 包

javascript - 根据 Javascript 中的选择填充下拉列表

c# onclick 和 onclientclick 同时

typescript - 如何在新的成分API中键入计算属性?

javascript - Vue.js 破坏了 Google map 功能

javascript - 使用filter()按子列表中的值过滤计算列表

javascript - Vue.js 方法简写

JavaScript 原型(prototype)基础知识

javascript - 如何在 HTML 5 中将网络摄像头流式传输到客户端