diff --git a/src/ng/directive/ngPluralize.js b/src/ng/directive/ngPluralize.js index a3424cf5f324..d9327b82d7f6 100644 --- a/src/ng/directive/ngPluralize.js +++ b/src/ng/directive/ngPluralize.js @@ -178,11 +178,14 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp whenExp = element.attr(attr.$attr.when), // this is because we have {{}} in attrs offset = attr.offset || 0, whens = scope.$eval(whenExp), - whensExpFns = {}; + whensExpFns = {}, + startSymbol = $interpolate.startSymbol(), + endSymbol = $interpolate.endSymbol(); forEach(whens, function(expression, key) { whensExpFns[key] = - $interpolate(expression.replace(BRACE, '{{' + numberExp + '-' + offset + '}}')); + $interpolate(expression.replace(BRACE, startSymbol + numberExp + '-' + + offset + endSymbol)); }); scope.$watch(function() { diff --git a/test/ng/directive/ngPluralizeSpec.js b/test/ng/directive/ngPluralizeSpec.js index c382f4f47b99..e790518cc66d 100644 --- a/test/ng/directive/ngPluralizeSpec.js +++ b/test/ng/directive/ngPluralizeSpec.js @@ -133,4 +133,41 @@ describe('ngPluralize', function() { expect(element.text()).toBe('Igor, Misko and 2 other people are viewing.'); })); }); + + + describe('interpolation', function() { + + it('should support custom interpolation symbols', function() { + module(function($interpolateProvider) { + $interpolateProvider.startSymbol('[[').endSymbol('%%'); + }); + + inject(function($compile, $rootScope) { + element = $compile( + "" + + "")($rootScope); + $rootScope.p1 = 'Igor'; + + $rootScope.viewCount = 0; + $rootScope.$digest(); + expect(element.text()).toBe('Nobody is viewing.'); + + $rootScope.viewCount = 1; + $rootScope.$digest(); + expect(element.text()).toBe('Igor is viewing.'); + + $rootScope.viewCount = 2; + $rootScope.$digest(); + expect(element.text()).toBe('Igor and one other person are viewing.'); + + $rootScope.viewCount = 3; + $rootScope.$digest(); + expect(element.text()).toBe('Igor and 2 other people are viewing.'); + }); + }) + }); });