File tree 3 files changed +86
-0
lines changed
3 files changed +86
-0
lines changed Original file line number Diff line number Diff line change
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
+ < / t r >
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
+ < / t a b l e >
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 >
Original file line number Diff line number Diff line change
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
+ } )
You can’t perform that action at this time.
0 commit comments