Skip to content

Commit 8822006

Browse files
committed
refactor(ngClass): remove unnecessary dependency on $animate
1 parent b3a3ed3 commit 8822006

File tree

2 files changed

+31
-22
lines changed

2 files changed

+31
-22
lines changed

src/ng/directive/ngClass.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
function classDirective(name, selector) {
1010
name = 'ngClass' + name;
11-
return ['$animate', function($animate) {
11+
12+
return [function() {
1213
return {
1314
restrict: 'AC',
1415
link: function(scope, element, attr) {
@@ -69,12 +70,9 @@ function classDirective(name, selector) {
6970
var toRemove = arrayDifference(oldClasses, newClasses);
7071
toAdd = digestClassCounts(toAdd, 1);
7172
toRemove = digestClassCounts(toRemove, -1);
72-
if (toAdd && toAdd.length) {
73-
$animate.addClass(element, toAdd);
74-
}
75-
if (toRemove && toRemove.length) {
76-
$animate.removeClass(element, toRemove);
77-
}
73+
74+
attr.$addClass(toAdd);
75+
attr.$removeClass(toRemove);
7876
}
7977

8078
function ngClassWatchAction(newVal) {

test/ng/directive/ngClassSpec.js

+26-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
describe('ngClass', function() {
3+
fdescribe('ngClass', function() {
44
var element;
55

66
beforeEach(module(function($compileProvider) {
@@ -244,31 +244,42 @@ describe('ngClass', function() {
244244
}));
245245

246246

247-
it('should allow ngClassOdd/Even on the same element with overlapping classes', inject(function($rootScope, $compile, $animate) {
248-
var className;
249-
250-
element = $compile('<ul><li ng-repeat="i in [0,1,2]" ng-class-odd="\'same odd\'" ng-class-even="\'same even\'"></li><ul>')($rootScope);
247+
it('should allow ngClassOdd/Even on the same element with overlapping classes',
248+
inject(function($compile, $rootScope) {
249+
element = $compile(
250+
'<ul>' +
251+
'<li ng-repeat="i in [0,1,2]" ' +
252+
'ng-class-odd="\'same odd\'" ' +
253+
'ng-class-even="\'same even\'">' +
254+
'</li>' +
255+
'<ul>')($rootScope);
251256
$rootScope.$digest();
252-
var e1 = jqLite(element[0].childNodes[1]);
253-
var e2 = jqLite(element[0].childNodes[5]);
254-
expect(e1.hasClass('same')).toBeTruthy();
255-
expect(e1.hasClass('odd')).toBeTruthy();
256-
expect(e2.hasClass('same')).toBeTruthy();
257-
expect(e2.hasClass('odd')).toBeTruthy();
257+
258+
var e1 = element.children().eq(0);
259+
var e2 = element.children().eq(1);
260+
var e3 = element.children().eq(2);
261+
262+
expect(e1).toHaveClass('same');
263+
expect(e1).toHaveClass('odd');
264+
expect(e1).not.toHaveClass('even');
265+
expect(e2).toHaveClass('same');
266+
expect(e2).not.toHaveClass('odd');
267+
expect(e2).toHaveClass('even');
268+
expect(e3).toHaveClass('same');
269+
expect(e3).toHaveClass('odd');
270+
expect(e3).not.toHaveClass('even');
258271
})
259272
);
260273

261-
it('should allow ngClass with overlapping classes', inject(function($rootScope, $compile, $animate) {
274+
it('should allow ngClass with overlapping classes', inject(function($rootScope, $compile) {
262275
element = $compile('<div ng-class="{\'same yes\': test, \'same no\': !test}"></div>')($rootScope);
263276
$rootScope.$digest();
264277

265278
expect(element).toHaveClass('same');
266279
expect(element).not.toHaveClass('yes');
267280
expect(element).toHaveClass('no');
268281

269-
$rootScope.$apply(function() {
270-
$rootScope.test = true;
271-
});
282+
$rootScope.$apply('test = true');
272283

273284
expect(element).toHaveClass('same');
274285
expect(element).toHaveClass('yes');

0 commit comments

Comments
 (0)