Skip to content

Commit 45f70d7

Browse files
committed
表格组件
1 parent 4496135 commit 45f70d7

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

vuejs练习/表格组件的使用/index.css

Whitespace-only changes.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>vuejs练习</title>
6+
<link rel="stylesheet" type="text/css" href="index.css">
7+
8+
<script type="text/x-template" id="grid-template">
9+
<table>
10+
<thead>
11+
<tr>
12+
<th v-for="key in columns"
13+
@click="sortBy(key)"
14+
:class="{active: sortKey == key}">
15+
{{key | capitalize}}
16+
<span class="arrow" :class="sortOrders[key] > 0 ? 'asc' : 'dsc'"></span>
17+
</th>
18+
</tr>
19+
</thead>
20+
<tbody>
21+
<tr v-for="entry in data | filterBy filterKey | orderBy sortKey sortOrders[sortKey]">
22+
<td v-for="key in columns">
23+
{{entry[key]}}
24+
</td>
25+
</tr>
26+
</tbody>
27+
</table>
28+
</script>
29+
</head>
30+
<body>
31+
<div id="demo">
32+
<form id="search">
33+
Search<input name="query" v-model="searchQuery">
34+
</form>
35+
36+
<demo-grid :data="gridData" :columns="gridColumns" :filter-key="searchQuery">
37+
</demo-grid>
38+
</div>
39+
<script src='../vue.min.js'></script>
40+
<script src="index.js"></script>
41+
42+
</body>
43+
</html>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Created by huangchengdu on 16/10/18.
3+
*/
4+
5+
Vue.component('demo-grid',{
6+
template:'#grid-template',
7+
props:{
8+
data:Array,
9+
columns:Array,
10+
filterKey:String
11+
},
12+
data:function () {
13+
var sortOrders = {};
14+
this.columns.forEach(function (key) {
15+
sortOrders[key] = 1;
16+
});//sortOrders有两个属性name和power。默认都是将序
17+
return {
18+
sortKey:'',
19+
sortOrders:sortOrders
20+
};
21+
},
22+
methods:{
23+
//修改两个排列属性的值从而更改排序方式
24+
sortBy:function (key) {
25+
this.sortKey = key;
26+
this.sortOrders[key] = this.sortOrders[key] * -1;//改变排序方式
27+
}
28+
}
29+
})
30+
31+
var demo = new Vue({
32+
el:"#demo",
33+
data:{
34+
searchQuery:'',
35+
gridColumns:['name','power'],
36+
gridData:[
37+
{ name: 'Chuck Norris', power: Infinity },
38+
{ name: 'Bruce Lee', power: 9000 },
39+
{ name: 'Jackie Chan', power: 7000 },
40+
{ name: 'Jet Li', power: 8000 }
41+
]
42+
}
43+
})

0 commit comments

Comments
 (0)