el-tree dynamic icon

by taadis

HTML

<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui/lib/index.js"></script>
<div id="app">
  <el-tree :data="treeData" node-key="id" default-expand-all>
    <span slot-scope="{node, data}">
      <i :class="data.icon"></i>
      <span> {{node.label}}</span>
    </span>
  </el-tree>
</div>

CSS

@import url("//unpkg.com/element-ui/lib/theme-chalk/index.css");

JavaScript

var Main = {
  data() {
    return {
      treeData: [{
        id: 1,
        label: 'SystemManage',
        icon: 'el-icon-setting',
        children: [{
            id: 11,
            label: 'UserManage',
            icon: 'el-icon-time',
            children: []
          }, {
            id: 11,
            label: 'RoleManage',
            icon: 'el-icon-service',
            children: []
          },
          {
            id: 11,
            label: 'MenuManage',
            icon: 'el-icon-menu',
            children: []
          }
        ]
      }, {
        id: 2,
        label: 'Other1',
        icon: 'el-icon-goods',
        children: []
      }, {
        id: 3,
        label: 'Other2',
        icon: 'el-icon-delete',
        children: []
      }]
    }
  }
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')