From 8b7dacf70136aa098eb9905b765655a9cbcadaf0 Mon Sep 17 00:00:00 2001 From: Foxandxss Date: Tue, 20 Oct 2015 20:07:02 +0200 Subject: [PATCH] fix(alert): allow interpolations with dismiss-on-timeout --- src/alert/alert.js | 9 ++++++--- src/alert/test/alert.spec.js | 13 +++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/alert/alert.js b/src/alert/alert.js index e5ace4a081..4b007c666a 100644 --- a/src/alert/alert.js +++ b/src/alert/alert.js @@ -1,12 +1,15 @@ angular.module('ui.bootstrap.alert', []) -.controller('UibAlertController', ['$scope', '$attrs', '$timeout', function($scope, $attrs, $timeout) { +.controller('UibAlertController', ['$scope', '$attrs', '$interpolate', '$timeout', function($scope, $attrs, $interpolate, $timeout) { $scope.closeable = !!$attrs.close; - if (angular.isDefined($attrs.dismissOnTimeout)) { + var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ? + $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null; + + if (dismissOnTimeout) { $timeout(function() { $scope.close(); - }, parseInt($attrs.dismissOnTimeout, 10)); + }, parseInt(dismissOnTimeout, 10)); } }]) diff --git a/src/alert/test/alert.spec.js b/src/alert/test/alert.spec.js index 543a1a951b..9946906a98 100644 --- a/src/alert/test/alert.spec.js +++ b/src/alert/test/alert.spec.js @@ -136,6 +136,19 @@ describe('uib-alert', function() { $timeout.flush(); expect(scope.removeAlert).toHaveBeenCalled(); }); + + it('should not close immediately with a dynamic dismiss-on-timeout', function() { + scope.removeAlert = jasmine.createSpy(); + scope.dismissTime = 500; + $compile('Default alert!')(scope); + scope.$digest(); + + $timeout.flush(100); + expect(scope.removeAlert).not.toHaveBeenCalled(); + + $timeout.flush(500); + expect(scope.removeAlert).toHaveBeenCalled(); + }); }); /* Deprecation tests below */