iview-ui

和element-ui类似的是iview-ui框架的使用方法基本相同,不同的是提供api和事件等等

iview-ui地址:https://iviewui.com/

如何使用

第一步安装

npm install view-design --save

要在main.js中进行配置

 1 import Vue from 'vue'
 2 // 相对路径引入的App.vue文件
 3 import App from './App.vue'
 4 // 引入ui框架
 5 import elementUi from 'element-ui'
 6 //引入css
 7 import 'element-ui/lib/theme-chalk/index.css'
 8 //使用element-ui
 9 Vue.use(elementUi)
10 // 引入iview-ui框架
11 import iviewUi from "view-design"
12 //引入css
13 import 'view-design/dist/styles/iview.css'
14 //使用iview-ui
15 Vue.use(iviewUi)
16 new Vue({
17     // 渲染节点
18     render: h => h(App),
19 }).$mount('#app')

可以在任意页面中使用

 1 <template>
 2   <div>
 3      <Input v-model="value" placeholder="Enter something..." style="width: 300px" />
 4   </div>
 5 </template>
 6 <script>
 7   export default {
 8   }
 9 </script>
10 <style lang="scss" scoped>
11 </style>

 

 

table表格

iview-ui的table和element的使用方法不一样,iview是完全通过数据驱动的

1 <template>
2     <Table :columns="columns1" :data="data1"></Table>
3 </template>
  • columns指的是对应的表头状态
  • data指的是加载的表格数据
 1 <template>
 2   <div>
 3          <Table :columns="columns1" :data="data1"></Table>
 4   </div>
 5 </template>
 6 <script>
 7 
 8     export default {
 9         data () {
10             return {
11                 columns1: [
12                     {
13                         title: 'Name',
14                         key: 'name'
15                     },
16                     {
17                         title: 'Age',
18                         key: 'age'
19                     },
20                     {
21                         title: 'Address',
22                         key: 'address'
23                     }
24                 ],
25                 data1: [
26                     {
27                         name: 'John Brown',
28                         age: 18,
29                         address: 'New York No. 1 Lake Park',
30                         date: '2016-10-03'
31                     },
32                     {
33                         name: 'Jim Green',
34                         age: 24,
35                         address: 'London No. 1 Lake Park',
36                         date: '2016-10-01'
37                     },
38                     {
39                         name: 'Joe Black',
40                         age: 30,
41                         address: 'Sydney No. 1 Lake Park',
42                         date: '2016-10-02'
43                     },
44                     {
45                         name: 'Jon Snow',
46                         age: 26,
47                         address: 'Ottawa No. 2 Lake Park',
48                         date: '2016-10-04'
49                     }
50                 ]
51             }
52         }
53     }
54   
55 </script>
56 <style lang="scss" scoped>
57 </style>

 

iview-ui

 

 

 

我们需要注意的是iviewui和element-ui使用起来会有不一样感觉,iview表格会更轻,element-ui使用起来拓展性更好

 

表格的深入

 1 <template>
 2   <div>
 3         <el-table :data="tableData" style="width: 100%">
 4       <el-table-column prop="date" label="日期" width="180">
 5       </el-table-column>
 6       <el-table-column prop="name" label="姓名" width="180">
 7       </el-table-column>
 8       <el-table-column  prop="address"  label="地址">
 9       </el-table-column>
10       <el-table-column  prop="age"  label="年龄">
11       </el-table-column>
12       <el-table-column  prop="sex"  label="性别">
13       </el-table-column>
14       <el-table-column  prop="height"  label="身高">
15       </el-table-column>
16     </el-table>
17   </div>
18 </template>
19 
20 <script>
21   export default {
22             data() {
23         return {
24           tableData: [{
25             date: '2016-05-02',
26             name: '王小虎',
27             address: '上海市普陀区金沙江路 1518 弄',
28             age:18,
29             sex:1,
30             height:180,
31           },{
32             date: '2016-05-02',
33             name: '王小虎',
34             address: '上海市普陀区金沙江路 1518 弄',
35             age:18,
36            sex:0,
37             height:180,
38           }, {
39             date: '2016-05-02',
40             name: '王小虎',
41             address: '上海市普陀区金沙江路 1518 弄',
42             age:18,
43             sex:1,
44             height:180,
45           }, {
46             date: '2016-05-02',
47             name: '王小虎',
48             address: '上海市普陀区金沙江路 1518 弄',
49             age:18,
50            sex:0,
51             height:180,
52           },  
53           ]
54         }
55       }
56   }
57 </script>
58 
59 <style lang="scss" scoped>
60 
61 </style>

 

iview-ui

 

 

此时我们想要进一步优化数据

table-colum提供了一个slot插槽功能,内部可以拓展自定义的内容

 1 <template>
 2   <div>
 3         <el-table :data="tableData" style="width: 100%">
 4       <el-table-column prop="date" label="日期" width="180">
 5  
 6       </el-table-column>
 7       <el-table-column prop="name" label="姓名" width="180">
 8       </el-table-column>
 9       <el-table-column  prop="address"  label="地址">
10       </el-table-column>
11       <el-table-column  prop="age"  label="年龄">
12             <template slot-scope="scope">
13           <div>
14            {{scope.row.age}}岁
15 
16           </div>
17       </template>
18       </el-table-column>
19       <el-table-column  prop="sex"  label="性别">
20            <template slot-scope="scope">
21           <div>
22            {{getSex(scope.row.sex)}}
23 
24           </div>
25       </template>
26       </el-table-column>
27       <el-table-column  prop="height"  label="身高">
28               <template slot-scope="scope">
29           <div>
30            {{scope.row.height}}cm
31 
32           </div>
33       </template>
34       </el-table-column>
35     </el-table>
36   </div>
37 </template>
38 
39 <script>
40   export default {
41             data() {
42         return {
43           tableData: [{
44             date: '2016-05-02',
45             name: '王小虎',
46             address: '上海市普陀区金沙江路 1518 弄',
47             age:18,
48             sex:1,
49             height:180,
50           },{
51             date: '2016-05-02',
52             name: '王小虎',
53             address: '上海市普陀区金沙江路 1518 弄',
54             age:18,
55            sex:0,
56             height:180,
57           }, {
58             date: '2016-05-02',
59             name: '王小虎',
60             address: '上海市普陀区金沙江路 1518 弄',
61             age:18,
62             sex:1,
63             height:180,
64           }, {
65             date: '2016-05-02',
66             name: '王小虎',
67             address: '上海市普陀区金沙江路 1518 弄',
68             age:18,
69            sex:0,
70             height:180,
71           },  
72           ]
73         }
74       },
75       methods:{
76         getSex(val){
77           if(val==1){
78             return '男'
79           }else{
80             return '女'
81           }
82         }
83       }
84   }
85 </script>
86 
87 <style lang="scss" scoped>
88 
89 </style>

 

iview-ui

 

 

我们在看iviewui的table使用

 1 <template>
 2   <div>
 3     <Table :columns="columns1" :data="tableData"></Table>
 4   </div>
 5 </template>
 6 
 7 <script>
 8   export default {
 9     data () {
10             return {
11                 columns1: [
12                     {
13                         title: '姓名',
14                         key: 'name'
15                     },
16                     {
17                         title: '年龄',
18                         key: 'age'
19                     },
20                     {
21                         title: '地址',
22                         key: 'address'
23                     },
24                     {
25                         title: '日期',
26                         key: 'date'
27                     }
28                 ],
29                 tableData: [
30                     {
31                         name: 'John Brown',
32                         age: 18,
33                         address: 'New York No. 1 Lake Park',
34                         date: '2016-10-03'
35                     },
36                     {
37                         name: 'Jim Green',
38                         age: 24,
39                         address: 'London No. 1 Lake Park',
40                         date: '2016-10-01'
41                     },
42                     {
43                         name: 'Joe Black',
44                         age: 30,
45                         address: 'Sydney No. 1 Lake Park',
46                         date: '2016-10-02'
47                     },
48                     {
49                         name: 'Jon Snow',
50                         age: 26,
51                         address: 'Ottawa No. 2 Lake Park',
52                         date: '2016-10-04'
53                     }
54                 ]
55             }
56         }
57   }
58 </script>
59 
60 <style lang="scss" scoped>
61 
62 </style>

 

table表格必要的参数就是title和key,title表示的是表格的表头名称,key指的是接收的tableData数据参数

 

iview-ui

 

 

和elementui不同的是iviewui改变的是column数据状态,符合了iview研发的table 的宗旨,数据驱动表格

  1 <template>
  2   <div>
  3     <Table :columns="columns1" :data="data1"></Table>
  4   </div>
  5 </template>
  6 
  7 <script>
  8   export default {
  9     data () {
 10             return {
 11                 columns1: [
 12                     {
 13                         title: '姓名',
 14                         key: 'name',
 15                         
 16                     
 17                     },
 18                     {
 19                         title: '年龄',
 20                         key: 'age',
 21                          render: (h, params) => {
 22                          
 23                             return h('div', [  
 24                                 h('span',params.row.age+"岁")
 25                             ]);
 26                         }
 27                     },
 28                       {
 29                         title: '性别',
 30                         key: 'sex',
 31                         render: (h, params) => {
 32                           // let str=''
 33                           // if(params.row.sex==1){
 34                           //   str="男"
 35                           // }else{
 36                           //   str="女"
 37                           // }
 38                           //   return h('div', [  
 39                           //       h('span',str)
 40                           //   ]);
 41                            return h('div', [  
 42                                 h('span',this.getSex(params.row.sex))
 43                             ]);
 44                         }
 45 
 46                     },
 47                     {
 48                         title: '地址',
 49                         key: 'address'
 50                     },
 51                     {
 52                         title: '日期',
 53                         key: 'date'
 54                     }
 55                 ],
 56                 data1: [
 57                     {
 58                         name: 'John Brown',
 59                         age: 18,
 60                         sex:1,
 61                         address: 'New York No. 1 Lake Park',
 62                         date: '2016-10-03'
 63                     },
 64                     {
 65                         name: 'Jim Green',
 66                         age: 24,
 67                         sex:0,
 68                         address: 'London No. 1 Lake Park',
 69                         date: '2016-10-01'
 70                     },
 71                     {
 72                         name: 'Joe Black',
 73                         age: 30,
 74                         sex:1,
 75                         address: 'Sydney No. 1 Lake Park',
 76                         date: '2016-10-02'
 77                     },
 78                     {
 79                         name: 'Jon Snow',
 80                         age: 26,
 81                         sex:0,
 82                         address: 'Ottawa No. 2 Lake Park',
 83                         date: '2016-10-04'
 84                     }
 85                 ]
 86             }
 87         },
 88         methods:{
 89           getSex(val){
 90               if(val==1){
 91                 return "男"
 92               }else{
 93                 return '女'
 94               }
 95           }
 96         }
 97   }
 98 </script>
 99 
100 <style lang="scss" scoped>
101 
102 </style>

 

iview-ui

 

 

render函数是vue的自定义函数,可以理解为,在表格中创建组件或者元素

render函数返回的h内容就是一个函数,第一个参数是渲染的元素名称,第二个参数是渲染文本

 

iview表格深入-slot

我们使用iviewui也可以实现和elementui一样的效果

 1 <template>
 2   <div>
 3     <Table :columns="columns1" :data="data1"></Table>
 4         <template slot-scope="{ row }" slot="name">
 5         <span>{{row.name}}</span>
 6     </template>
 7     <template slot-scope="{ row }" slot="age">
 8         <span>{{row.age}}岁</span>
 9     </template>
10     <template slot-scope="{ row }" slot="sex">
11         <span>{{row.sex}}</span>
12     </template>
13     <template slot-scope="{ row }" slot="address">
14         <span>{{row.address}}</span>
15     </template>
16  <template slot-scope="{ row }" slot="date">
17         <span>{{row.date}}</span>
18     </template>
19   </div>
20 </template>
21 
22 <script>
23   export default {
24     data () {
25             return {
26                 columns1: [
27                     {
28                         title: '姓名',
29                         slot: 'name',                   
30                     },
31                     {
32                         title: '年龄',
33                         slot: 'age',                      
34                     },
35                       {
36                         title: '性别',
37                         slot: 'sex',                 
38                     },
39                     {
40                         title: '地址',
41                         slot: 'address'
42                     },
43                     {
44                         title: '日期',
45                         slot: 'date'
46                     }
47                 ],
48                 data1: [
49                     {
50                         name: 'John Brown',
51                         age: 18,
52                         sex:1,
53                         address: 'New York No. 1 Lake Park',
54                         date: '2016-10-03'
55                     },
56                     {
57                         name: 'Jim Green',
58                         age: 24,
59                         sex:0,
60                         address: 'London No. 1 Lake Park',
61                         date: '2016-10-01'
62                     },
63                     {
64                         name: 'Joe Black',
65                         age: 30,
66                         sex:1,
67                         address: 'Sydney No. 1 Lake Park',
68                         date: '2016-10-02'
69                     },
70                     {
71                         name: 'Jon Snow',
72                         age: 26,
73                         sex:0,
74                         address: 'Ottawa No. 2 Lake Park',
75                         date: '2016-10-04'
76                     }
77                 ]
78             }
79         },
80         methods:{
81           getSex(val){
82               if(val==1){
83                 return "男"
84               }else{
85                 return '女'
86               }
87           }
88         }
89   }
90 </script>
91 
92 <style lang="scss" scoped>
93 
94 </style>

 

需要注意的是column数据需要进行改变,从原来key改变为slot

iview-ui

 

上一篇:前端使用iview中upload上传文件给后台


下一篇:【iview中table表头嵌套子表头】