fix(docs): handle the empty string in errorDisplay

This commit is contained in:
Ken Sheedlo 2013-08-01 15:19:06 -07:00
parent 705c9d95bc
commit 3c0c7165e2
2 changed files with 13 additions and 5 deletions

View file

@ -7,7 +7,7 @@ describe("errorDisplay", function () {
beforeEach(inject(function ($injector) {
var $rootScope = $injector.get('$rootScope'),
$compile = $injector.get('$compile');
$location = $injector.get('$location');
compileHTML = function (code) {
@ -35,7 +35,7 @@ describe("errorDisplay", function () {
});
it('should interpolate a template with no parameters when search parameters are present', function () {
var elm;
var elm;
spyOn($location, 'search').andReturn({ p0: 'foobaz' });
elm = compileHTML('<div error-display="This is a test"></div>');
@ -43,7 +43,7 @@ describe("errorDisplay", function () {
});
it('should correctly interpolate search parameters', function () {
var elm;
var elm;
spyOn($location, 'search').andReturn({ p0: '42' });
elm = compileHTML('<div error-display="The answer is {0}"></div>');
@ -65,4 +65,12 @@ describe("errorDisplay", function () {
elm = compileHTML('<div error-display="This {0} is {1} on {2}"></div>');
expect(elm).toInterpolateTo('This Fooooo is {1} on {2}');
});
it('should correctly handle the empty string as an interpolation parameter', function () {
var elm;
spyOn($location, 'search').andReturn({ p0: 'test', p1: '' });
elm = compileHTML('<div error-display="This {0} is a {1}"></div>');
expect(elm).toInterpolateTo('This test is a ');
});
});

View file

@ -7,7 +7,7 @@ var docsApp = {
docsApp.controller.DocsVersionsCtrl = ['$scope', '$window', 'NG_VERSIONS', function($scope, $window, NG_VERSIONS) {
$scope.versions = expandVersions(NG_VERSIONS);
$scope.version = ($scope.version || angular.version.full).match(/^([\d\.]+\d+)/)[1]; //match only the number
$scope.jumpToDocsVersion = function(value) {
var isLastStable,
version,
@ -320,7 +320,7 @@ docsApp.directive.errorDisplay = ['$location', function ($location) {
formatArgs = [attrs.errorDisplay],
i;
for (i = 0; search['p'+i]; i++) {
for (i = 0; angular.isDefined(search['p'+i]); i++) {
formatArgs.push(search['p'+i]);
}
element.text(interpolate.apply(null, formatArgs));