element-ui table & checkbox

element-ui table中嵌套el-checkbox实现权限界面控制

by Towry Wang

HTML

<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui/lib/index.js"></script>
<div id="app">
   <el-table :data="list" v-loading="false" element-loading-text="给我一点时间" border fit highlight-current-row
                  style="width: 100%">
            <!-- 用户 -->
            <el-table-column min-width="150px" align="center" :label="角色">
                <template slot="header">
                  <el-checkbox v-model="all">全选</el-checkbox>
                </template>
                <template slot-scope="scope">
                    <span>{{scope.row.name}}</span>
                </template>
            </el-table-column>
            <!-- 遍历权限组 -->
            <el-table-column min-width="150px" align="center" :label="item.name" :key="item.id"
                             v-for="item in tableHead">
                <template slot-scope="scope">
                    <!--{{scope.row.roles}}-->
                    <!-- 遍历用户权限  问题在这里:怎么通过scope.row.roles控制el-checkbox的选中状态-->
                    <!--<el-checkbox :checked="scope.row.roles.indexOf(item.id)!==-1"/>-->
                    <el-checkbox :checked="scope.row.roles.includes(item.id)"/>
                </template>
            </el-table-column>
        </el-table>
        
        <p>
          上面左上角全选点击无效.
        </p>
</div>

CSS

@import url("//unpkg.com/[email protected]/lib/theme-default/index.css");

JavaScript

var Main = {
  data() {
      return {
      		all: false,
      		list: [
            {id: 1, name: "曾与", roles: [1,2,3,4]},
            {id: 2, name: "念慈", roles: [5,6]},
            {id: 3, name: "悟净", roles: [4,5,6]},
            {id: 4, name: "八戒", roles: [3,4,5,6]},
            {id: 5, name: "猴头", roles: [1,5,6]},
            {id: 6, name: "佛祖", roles: [1,2]}
          ], // 用户列表 roles里的数组对应此用户拥有的权限id
      		tableHead: [
          	{id: 1, name: "用户管理权限"},
            {id: 2, name: "设备管理权限"},
            {id: 3, name: "素材管理权限"},
            {id: 4, name: "节目审核权限"},
            {id: 5, name: "节目发布权限"},
            {id: 6, name: "节目编辑权限"}
          ], // 权限列表
          checked: true
      }
    },
    created() {
    	
    },
    methods: {
      
   }
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')