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

删除数据表Vuetify上的选定行

  •  0
  • Zaid  · 技术社区  · 6 年前

    <script>
      export default {
        data () {
          return {
            props:[],
            selected: [],
            headers: [
              {
                text: 'Name',
                align: 'left',
                sortable: true,
                value: 'name'
              },
              { text: 'Organisation', value: 'organisation' },
              { text: 'Supplier', value: 'supplier' },
              { text: 'Created By', value: 'createdBy' },
              { text: 'Updated By', value: 'updatedBy' },
           
            ],
            projects: [
              {
                name: 'test',
                organisation: 'test',
                supplier: 'test',
                createdBy: 'test',
                updatedBy: 'test'
              },
              {
                name: 'Ice cream sandwich',
                calories: 237,
                fat: 9.0,
                carbs: 37,
                protein: 4.3,
                iron: '1%'
              },
              {
                name: 'Eclair',
                calories: 262,
                fat: 16.0,
                carbs: 23,
                protein: 6.0,
                iron: '7%'
              },
              {
                name: 'Cupcake',
                calories: 305,
                fat: 3.7,
                carbs: 67,
                protein: 4.3,
                iron: '8%'
              },
              {
                name: 'Gingerbread',
                calories: 356,
                fat: 16.0,
                carbs: 49,
                protein: 3.9,
                iron: '16%'
              },
              {
                name: 'Jelly bean',
                calories: 375,
                fat: 0.0,
                carbs: 94,
                protein: 0.0,
                iron: '0%'
              },
              {
                name: 'Lollipop',
                calories: 392,
                fat: 0.2,
                carbs: 98,
                protein: 0,
                iron: '2%'
              },
              {
                name: 'Honeycomb',
                calories: 408,
                fat: 3.2,
                carbs: 87,
                protein: 6.5,
                iron: '45%'
              },
              {
                name: 'Donut',
                calories: 452,
                fat: 25.0,
                carbs: 51,
                protein: 4.9,
                iron: '22%'
              },
              {
                name: 'KitKat',
                calories: 518,
                fat: 26.0,
                carbs: 65,
                protein: 7,
                iron: '6%'
              }
            ]
          }
        },
    
        methods: {
            deleteProject
            {
                // delete funtion here
            },
    
            liveProject()
            {
                alert("live");
            },
    
            closeProject()
            {
                alert("close");
            },
        }
      }
    </script>
    <template>
    <div>
    
        <v-toolbar flat color="white">
          <v-toolbar-title>Manage Projects</v-toolbar-title>   
          {{ props }}
        </v-toolbar>
        
      <v-data-table
        v-model="props"
        :headers="headers"
        :items="projects"
        item-key="name"
        select-all
        class="elevation-1"
      >
        <template slot="items" slot-scope="props">
          <td>
            <v-checkbox
              v-model="props.selected"
              primary
              hide-details
            ></v-checkbox>
          </td>
          <td>{{ props.item.name }}</td>
          <td class="text-xs-left">{{ props.item.organisation }}</td>
          <td class="text-xs-left">{{ props.item.supplier }}</td>
          <td class="text-xs-left">{{ props.item.createdBy }}</td>
          <td class="text-xs-left">{{ props.item.updatedBy }}</td>
         
        </template>
      </v-data-table>
    
       <div class="text-xs-center pt-2">
          <v-btn color="primary" @click="deleteProject">Delete</v-btn>
          <v-btn color="primary" @click="liveProject">Make Live</v-btn>
           <v-btn color="primary" @click="closeProject">Close</v-btn>
           
           
        </div>
    </div>
    
    </template>
    2 回复  |  直到 6 年前
        1
  •  3
  •   Riddhi    6 年前

    下面是从数据表中删除选定行的代码。

    检查下面的示例。

    Codepen link to your solution

    模板=>

        <div id="app">
      <v-app id="inspire">
        <v-data-table
          v-model="selected"
          :headers="headers"
          :items="desserts"
          item-key="name"
          select-all
          class="elevation-1"
        >
          <template slot="items" slot-scope="props">
            <td>
              <v-checkbox
                v-model="props.selected"
                primary
                hide-details
              ></v-checkbox>
            </td>
            <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.iron }}</td>
          </template>
        </v-data-table>
        <div>
          <v-btn color="primary" @click="deleteItem">Delete</v-btn>
        </div>
      </v-app>
    </div>
    

      new Vue({
      el: '#app',
      data () {
        return {
          selected: [],
          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: 'Iron (%)', value: 'iron' }
          ],
          desserts: [
            {
              name: 'Frozen Yogurt',
              calories: 159,
              fat: 6.0,
              carbs: 24,
              protein: 4.0,
              iron: '1%'
            },
            {
              name: 'Ice cream sandwich',
              calories: 237,
              fat: 9.0,
              carbs: 37,
              protein: 4.3,
              iron: '1%'
            },
            {
              name: 'Eclair',
              calories: 262,
              fat: 16.0,
              carbs: 23,
              protein: 6.0,
              iron: '7%'
            },
            {
              name: 'Cupcake',
              calories: 305,
              fat: 3.7,
              carbs: 67,
              protein: 4.3,
              iron: '8%'
            },
            {
              name: 'Gingerbread',
              calories: 356,
              fat: 16.0,
              carbs: 49,
              protein: 3.9,
              iron: '16%'
            },
            {
              name: 'Jelly bean',
              calories: 375,
              fat: 0.0,
              carbs: 94,
              protein: 0.0,
              iron: '0%'
            },
            {
              name: 'Lollipop',
              calories: 392,
              fat: 0.2,
              carbs: 98,
              protein: 0,
              iron: '2%'
            },
            {
              name: 'Honeycomb',
              calories: 408,
              fat: 3.2,
              carbs: 87,
              protein: 6.5,
              iron: '45%'
            },
            {
              name: 'Donut',
              calories: 452,
              fat: 25.0,
              carbs: 51,
              protein: 4.9,
              iron: '22%'
            },
            {
              name: 'KitKat',
              calories: 518,
              fat: 26.0,
              carbs: 65,
              protein: 7,
              iron: '6%'
            }
          ]
        }
      },
      methods: {
       deleteItem () {
       if(confirm('Are you sure you want to delete this item?')){
      for(var i = 0; i <this.selected.length; i++){
          const index = this.desserts.indexOf(this.selected[i]);
          this.desserts.splice(index, 1);
      }
        }
       }
    }
    })
    
        2
  •  0
  •   margherita pizza    6 年前
    deleteProject(item_name){
        this.projects.splice(this.projects.findIndex(e=> e.name == item_name),1)
    }
    
    // JS splice method for remove items from an array.
    // JS findIndex method for find the index of the element which you want to delete. 
    
        3
  •  0
  •   Johhn    6 年前

    昨天我也遇到过类似的问题,但是jquery的问题。现在使用vuejs,我想模型绑定实际上更简单,这样所有选定的行都将被推送到一个数据属性。然后单击delete,循环遍历所有选定的id或密钥,并将它们从您的存储中删除,或者调用后端api或您的数据属性,就像您在这里所做的那样,例如。

    data: () => ({
        selected: [],
        projects: {/*...content in here */},
    });
    
    methods: {
    
       delete() {
           this.selected.forEach(function(project) { // project here is just the index of the selected in the projects array
               projects.splice(project, 1);
          });
    
          this.selected = []; // don't forget to empty selected
       }
    }
    
        4
  •  0
  •   Rakibul Haq thanksd    6 年前

    Data table store 的对象数组


    我们也可以用 地图 为了得到 index 存储阵列 并使用以下方法将其移除:

    REMOVE_OBJECT_FROM_ARRAY: (state, payload) => { let i = state.someArrayofObjects.map(item => item.id).indexOf(payload.id); state.someArrayofObjects.splice(i, 1); }

    这里,那个 id MUTATION ,我们也只能通过 身份证件 payload . 在这种情况下,我们可以这样做:

    REMOVE_OBJECT_FROM_ARRAY: (state, payload) => { let i = state.someArrayofObjects.map(item => item.id).indexOf(payload); state.someArrayofObjects.splice(i, 1); }