@@ -12,7 +12,8 @@ export default function (Vue) {
1212 getAttr,
1313 isObject,
1414 addClass,
15- removeClass
15+ removeClass,
16+ isArray
1617 } = Vue . util
1718
1819 const onPriority = Vue . directive ( 'on' ) . priority
@@ -175,8 +176,8 @@ export default function (Vue) {
175176 updateClasses ( path , el ) {
176177 const activeClass = this . activeClass || this . router . _linkActiveClass
177178 // 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 )
180181 }
181182 // remove query string before matching
182183 const dest = this . path . replace ( queryStringRE , '' )
@@ -188,15 +189,15 @@ export default function (Vue) {
188189 dest . charAt ( dest . length - 1 ) !== '/' &&
189190 dest === path . replace ( trailingSlashRE , '' )
190191 ) ) {
191- addClass ( el , activeClass )
192+ toggleClasses ( el , activeClass , addClass )
192193 } else {
193- removeClass ( el , activeClass )
194+ toggleClasses ( el , activeClass , removeClass )
194195 }
195196 } else {
196197 if ( this . activeRE && this . activeRE . test ( path ) ) {
197- addClass ( el , activeClass )
198+ toggleClasses ( el , activeClass , addClass )
198199 } else {
199- removeClass ( el , activeClass )
200+ toggleClasses ( el , activeClass , removeClass )
200201 }
201202 }
202203 } ,
@@ -212,4 +213,18 @@ export default function (Vue) {
212213 link . hostname === location . hostname &&
213214 link . port === location . port
214215 }
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+ }
215230}
0 commit comments