From d78ba5f8f6e700143bdf3af1bfda0c05153daf45 Mon Sep 17 00:00:00 2001 From: Wesley Cho Date: Mon, 28 Mar 2016 20:47:44 -0700 Subject: [PATCH] feat(perf): optimize width resizing - Optimize running dynamic width calculations when resizing --- src/uiSelectController.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/uiSelectController.js b/src/uiSelectController.js index 5b00db2fd..3e4019a90 100644 --- a/src/uiSelectController.js +++ b/src/uiSelectController.js @@ -444,6 +444,7 @@ uis.controller('uiSelectCtrl', }; var sizeWatch = null; + var updaterScheduled = false; ctrl.sizeSearchInput = function() { var input = ctrl.searchInput[0], @@ -465,10 +466,16 @@ uis.controller('uiSelectCtrl', ctrl.searchInput.css('width', '10px'); $timeout(function() { //Give tags time to render correctly if (sizeWatch === null && !updateIfVisible(calculateContainerWidth())) { - sizeWatch = $scope.$watch(calculateContainerWidth, function(containerWidth) { - if (updateIfVisible(containerWidth)) { - sizeWatch(); - sizeWatch = null; + sizeWatch = $scope.$watch(angular.noop, function() { + if (!updaterScheduled) { + updaterScheduled = true; + $scope.$$postDigest(function() { + updaterScheduled = false; + if (updateIfVisible(calculateContainerWidth())) { + sizeWatch(); + sizeWatch = null; + } + }); } }); }