2
2
addClass ,
3
3
removeClass ,
4
4
isArray ,
5
- isPlainObject ,
6
- hasOwn
5
+ isPlainObject
7
6
} from '../../util/index'
8
7
9
8
export default {
@@ -24,22 +23,18 @@ export default {
24
23
25
24
handleObject ( value ) {
26
25
this . cleanup ( value )
27
- var keys = this . prevKeys = Object . keys ( value )
28
- for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
29
- var key = keys [ i ]
30
- if ( value [ key ] ) {
31
- addClass ( this . el , key )
32
- } else {
33
- removeClass ( this . el , key )
34
- }
35
- }
26
+ this . prevKeys = Object . keys ( value )
27
+ setObjectClasses ( this . el , value )
36
28
} ,
37
29
38
30
handleArray ( value ) {
39
31
this . cleanup ( value )
40
32
for ( var i = 0 , l = value . length ; i < l ; i ++ ) {
41
- if ( value [ i ] ) {
42
- addClass ( this . el , value [ i ] )
33
+ var val = value [ i ]
34
+ if ( val && isPlainObject ( val ) ) {
35
+ setObjectClasses ( this . el , val )
36
+ } else if ( val && typeof val === 'string' ) {
37
+ addClass ( this . el , val )
43
38
}
44
39
}
45
40
this . prevKeys = value . slice ( )
@@ -50,14 +45,30 @@ export default {
50
45
var i = this . prevKeys . length
51
46
while ( i -- ) {
52
47
var key = this . prevKeys [ i ]
53
- if ( key && ( ! value || ! contains ( value , key ) ) ) {
48
+ if ( ! key ) continue
49
+ if ( isPlainObject ( key ) ) {
50
+ var keys = Object . keys ( key )
51
+ for ( var k = 0 ; k < keys . length ; k ++ ) {
52
+ removeClass ( this . el , keys [ k ] )
53
+ }
54
+ } else {
54
55
removeClass ( this . el , key )
55
56
}
56
57
}
57
58
}
58
59
}
59
60
}
60
61
62
+ function setObjectClasses ( el , obj ) {
63
+ var keys = Object . keys ( obj )
64
+ for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
65
+ var key = keys [ i ]
66
+ if ( obj [ key ] ) {
67
+ addClass ( el , key )
68
+ }
69
+ }
70
+ }
71
+
61
72
function stringToObject ( value ) {
62
73
var res = { }
63
74
var keys = value . trim ( ) . split ( / \s + / )
@@ -67,9 +78,3 @@ function stringToObject (value) {
67
78
}
68
79
return res
69
80
}
70
-
71
- function contains ( value , key ) {
72
- return isArray ( value )
73
- ? value . indexOf ( key ) > - 1
74
- : hasOwn ( value , key )
75
- }
0 commit comments