@@ -12,7 +12,8 @@ export default function (Vue) {
12
12
getAttr,
13
13
isObject,
14
14
addClass,
15
- removeClass
15
+ removeClass,
16
+ isArray
16
17
} = Vue . util
17
18
18
19
const onPriority = Vue . directive ( 'on' ) . priority
@@ -175,8 +176,8 @@ export default function (Vue) {
175
176
updateClasses ( path , el ) {
176
177
const activeClass = this . activeClass || this . router . _linkActiveClass
177
178
// clear old class
178
- if ( this . prevActiveClass !== activeClass ) {
179
- removeClass ( el , this . prevActiveClass )
179
+ if ( this . prevActiveClass && this . prevActiveClass !== activeClass ) {
180
+ toggleClasses ( el , this . prevActiveClass , removeClass )
180
181
}
181
182
// remove query string before matching
182
183
const dest = this . path . replace ( queryStringRE , '' )
@@ -188,15 +189,15 @@ export default function (Vue) {
188
189
dest . charAt ( dest . length - 1 ) !== '/' &&
189
190
dest === path . replace ( trailingSlashRE , '' )
190
191
) ) {
191
- addClass ( el , activeClass )
192
+ toggleClasses ( el , activeClass , addClass )
192
193
} else {
193
- removeClass ( el , activeClass )
194
+ toggleClasses ( el , activeClass , removeClass )
194
195
}
195
196
} else {
196
197
if ( this . activeRE && this . activeRE . test ( path ) ) {
197
- addClass ( el , activeClass )
198
+ toggleClasses ( el , activeClass , addClass )
198
199
} else {
199
- removeClass ( el , activeClass )
200
+ toggleClasses ( el , activeClass , removeClass )
200
201
}
201
202
}
202
203
} ,
@@ -212,4 +213,18 @@ export default function (Vue) {
212
213
link . hostname === location . hostname &&
213
214
link . port === location . port
214
215
}
216
+
217
+ // this function is copied from v-bind:class implementation until
218
+ // we properly expose it...
219
+ function toggleClasses ( el , key , fn ) {
220
+ key = key . trim ( )
221
+ if ( key . indexOf ( ' ' ) === - 1 ) {
222
+ fn ( el , key )
223
+ return
224
+ }
225
+ var keys = key . split ( / \s + / )
226
+ for ( var i = 0 , l = keys . length ; i < l ; i ++ ) {
227
+ fn ( el , keys [ i ] )
228
+ }
229
+ }
215
230
}
0 commit comments