mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-10 09:09:46 +08:00
perf($animate): access DOM less in resolveElementClasses
Previously we were reading DOM attributes frequently, now we can do it just once.
This commit is contained in:
@@ -102,8 +102,14 @@ var $AnimateProvider = ['$provide', function($provide) {
|
||||
|
||||
function resolveElementClasses(element, cache) {
|
||||
var toAdd = [], toRemove = [];
|
||||
|
||||
var hasClasses = createMap();
|
||||
forEach((element.attr('class') || '').split(/\s+/), function(className) {
|
||||
hasClasses[className] = true;
|
||||
});
|
||||
|
||||
forEach(cache.classes, function(status, className) {
|
||||
var hasClass = jqLiteHasClass(element[0], className);
|
||||
var hasClass = hasClasses[className];
|
||||
|
||||
// If the most recent class manipulation (via $animate) was to remove the class, and the
|
||||
// element currently has the class, the class is scheduled for removal. Otherwise, if
|
||||
|
||||
@@ -477,9 +477,14 @@ angular.module('ngAnimate', ['ng'])
|
||||
});
|
||||
});
|
||||
|
||||
var hasClasses = Object.create(null);
|
||||
forEach((element.attr('class') || '').split(/\s+/), function(className) {
|
||||
hasClasses[className] = true;
|
||||
});
|
||||
|
||||
var toAdd = [], toRemove = [];
|
||||
forEach(cache.classes, function(status, className) {
|
||||
var hasClass = angular.$$hasClass(element[0], className);
|
||||
var hasClass = hasClasses[className] === true;
|
||||
var matchingAnimation = lookup[className] || {};
|
||||
|
||||
// When addClass and removeClass is called then $animate will check to
|
||||
|
||||
Reference in New Issue
Block a user