如何在 v-datatable 中使用 v-switches v-model 和动态数组

Ath*_*ane 5 javascript vue.js vuetify.js

我正在将 Vue.js 与 Vuetify 一起使用,我正在尝试使用v-data-table从后端加载菜单列表并使用它设置一些权限,v-switches但我在尝试v-model数组时遇到了问题:

<v-data-table
    :items="Menus"
    class="elevation-1"
    hide-actions
    :headers="Menuheaders"
    flat
>
    <template slot="items" slot-scope="props">
        <td><v-checkbox hide-details v-model="permissions.show" class="shrink mr-2"></v-checkbox></td>
        <td>{{ props.item.name }}</td>

        <td>
            <v-switch
                v-model="permissions.add"

            ></v-switch>
        </td>
        <td>
            <v-switch
                v-model="permissions.edit"
            ></v-switch>
        </td>
        <td>
            <v-switch
                v-model="permissions.delete"
            ></v-switch>
        </td>
        <td>
            <v-switch
                v-model="permissions.execute"
            ></v-switch>
        </td>

    </template>
</v-data-table>
Run Code Online (Sandbox Code Playgroud)

permissions数组是我v-model用于开关的东西。

<script>
export default {
    data() {
        return {

            Menus: [],

            Menuheaders: [
              { text: 'Show', value: 'show' },
              {
                text: 'Name',
                align: 'left',
                sortable: false,
                value: 'name'
              },
              { text: 'Add', value: 'add' },
              { text: 'Edit', value: 'edit' },
              { text: 'Delete', value: 'delete' },
              { text: 'Execute', value: 'execute' },
            ],
            Roles: [],
            permissions : [
                {
                    add : false,
                    edit : false,
                    delete : false,
                    show : false,
                    execute : false,
                }
            ]
        }
    },
    methods : {
        loadMenus(){

              axios.get("api/menu").then(({data}) => (this.Menus = data))
              .then(()=>{
              })
              .catch(()=>{
             })

        },
        loadRoles(){

              axios.get("api/role").then(({data}) => (this.Roles = data))
              .then(()=>{

              })
              .catch(()=>{
             })

        }

    }

}
</script>
Run Code Online (Sandbox Code Playgroud)

问题是当我点击开关时,它们都采用相同的值

屏幕

我在这里尝试做的是创建新角色并在每个菜单上分配权限

mcd 屏幕

Pat*_*tik 4

试试这个代码。获取数据后,将每个权限映射到每个菜单项。

[https://codepen.io/anon/pen/daBMaX?editors=1010]
Run Code Online (Sandbox Code Playgroud)