diff --git a/src/global/percentage/percentage.js b/src/global/percentage/percentage.js
index a98f7ec1..d1e3ebed 100644
--- a/src/global/percentage/percentage.js
+++ b/src/global/percentage/percentage.js
@@ -53,7 +53,7 @@ function PercentageMaskDirective($locale, $parse, PreFormatters, NumberMasks) {
}
var valueToFormat = preparePercentageToFormatter(value, decimals, modelValue.multiplier);
- return viewMask.apply(valueToFormat) + ' %';
+ return viewMask.apply(valueToFormat) + (hideSpace ? '%' : ' %');
}
function parse(value) {
diff --git a/src/global/percentage/percentage.test.js b/src/global/percentage/percentage.test.js
index 255f711e..85b198c6 100644
--- a/src/global/percentage/percentage.test.js
+++ b/src/global/percentage/percentage.test.js
@@ -64,6 +64,20 @@ describe('ui-percentage-mask', function() {
expect(model.$viewValue).toBe('100%');
});
+ it('should hide space before "%" after a model change if ui-hide-space is present', angular.mock.inject(function($rootScope) {
+ var input = TestUtil.compile('', {
+ model: 1,
+ decimals: 0
+ });
+
+ var model = input.controller('ngModel');
+ expect(model.$viewValue).toBe('100%');
+
+ $rootScope.model = 50; // When accessing via rootScope, update model to 50 not 0.5 to represent 50%
+ $rootScope.$digest();
+ expect(model.$viewValue).toBe('50%');
+ }));
+
it('should allow changing the number of decimals', angular.mock.inject(function($rootScope) {
var input = TestUtil.compile('', {
model: '12.345',