22 addClass ,
33 removeClass ,
44 isArray ,
5- isPlainObject ,
6- hasOwn
5+ isPlainObject
76} from '../../util/index'
87
98export default {
@@ -24,22 +23,18 @@ export default {
2423
2524 handleObject ( value ) {
2625 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 )
3628 } ,
3729
3830 handleArray ( value ) {
3931 this . cleanup ( value )
4032 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 )
4338 }
4439 }
4540 this . prevKeys = value . slice ( )
@@ -50,14 +45,30 @@ export default {
5045 var i = this . prevKeys . length
5146 while ( i -- ) {
5247 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 {
5455 removeClass ( this . el , key )
5556 }
5657 }
5758 }
5859 }
5960}
6061
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+
6172function stringToObject ( value ) {
6273 var res = { }
6374 var keys = value . trim ( ) . split ( / \s + / )
@@ -67,9 +78,3 @@ function stringToObject (value) {
6778 }
6879 return res
6980}
70-
71- function contains ( value , key ) {
72- return isArray ( value )
73- ? value . indexOf ( key ) > - 1
74- : hasOwn ( value , key )
75- }
0 commit comments