function ngGridLayoutPlugin () {
    var self = this;
    this.grid = null;
    this.scope = null;
    this.init = function(scope, grid, services) {
        self.domUtilityService = services.DomUtilityService;
        self.grid = grid;
        self.scope = scope;
    };

    this.updateGridLayout = function () {
        if (!self.scope.$$phase) {
            self.scope.$apply(function(){
                self.domUtilityService.RebuildGrid(self.scope, self.grid);
            });
        }
        else {
            // $digest or $apply already in progress
            self.domUtilityService.RebuildGrid(self.scope, self.grid);
        }
    };
}

@@ -319,13 +319,8 @@
     
-if (!
 self
@@ -331,309 +331,97 @@
 pe.$
-$phase) %7B%0A            self.scope.$apply(function()%7B%0A                self.domUtilityService.RebuildGrid(self.scope, self.grid);%0A            %7D);%0A        %7D%0A        else %7B%0A            // $digest or $apply already in progress%0A            self.domUtilityService.RebuildGrid(self.scope, self.grid);%0A        %7D
+evalAsync(function()%7B%0A%09%09%09self.domUtilityService.RebuildGrid(self.scope, self.grid);%0A%09%09%7D);
 %0A   

Update to use preferred $scope.apply check