From 4dac5fa5cce9c03ba260dad45773bc2cc1793cf0 Mon Sep 17 00:00:00 2001 From: Lucas Galfaso Date: Tue, 6 Jan 2015 11:47:51 +0100 Subject: [PATCH] fix(ngClass): handle multi-class definitions as an element of an array Handles multi-class definition as an element of an array Closes #8578 --- src/ng/directive/ngClass.js | 2 +- test/ng/directive/ngClassSpec.js | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ng/directive/ngClass.js b/src/ng/directive/ngClass.js index 665921b5f9e4..532c66d46bc9 100644 --- a/src/ng/directive/ngClass.js +++ b/src/ng/directive/ngClass.js @@ -97,7 +97,7 @@ function classDirective(name, selector) { function arrayClasses(classVal) { if (isArray(classVal)) { - return classVal; + return classVal.join(' ').split(' '); } else if (isString(classVal)) { return classVal.split(' '); } else if (isObject(classVal)) { diff --git a/test/ng/directive/ngClassSpec.js b/test/ng/directive/ngClassSpec.js index 9356efe62cbc..2b174dcc2a91 100644 --- a/test/ng/directive/ngClassSpec.js +++ b/test/ng/directive/ngClassSpec.js @@ -88,6 +88,16 @@ describe('ngClass', function() { })); + it('should support adding multiple classes via a space delimited string inside an array', inject(function($rootScope, $compile) { + element = $compile('
')($rootScope); + $rootScope.$digest(); + expect(element.hasClass('existing')).toBeTruthy(); + expect(element.hasClass('A')).toBeTruthy(); + expect(element.hasClass('B')).toBeTruthy(); + expect(element.hasClass('C')).toBeTruthy(); + })); + + it('should preserve class added post compilation with pre-existing classes', inject(function($rootScope, $compile) { element = $compile('
')($rootScope); $rootScope.dynClass = 'A';