fix(Angular.js): toKeyValue is not serializing null values

Signed-off-by: Josh Kurz <jkurz25@gmail.com>
This commit is contained in:
Josh Kurz
2014-04-03 00:59:21 -04:00
parent dde613f18e
commit 814c9847e8
2 changed files with 17 additions and 7 deletions

View File

@@ -1062,14 +1062,16 @@ function parseKeyValue(/**string*/keyValue) {
function toKeyValue(obj) {
var parts = [];
forEach(obj, function(value, key) {
if (isArray(value)) {
forEach(value, function(arrayValue) {
if (value !== null) {
if (isArray(value)) {
forEach(value, function(arrayValue) {
parts.push(encodeUriQuery(key, true) +
(arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
});
} else {
parts.push(encodeUriQuery(key, true) +
(arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));
});
} else {
parts.push(encodeUriQuery(key, true) +
(value === true ? '' : '=' + encodeUriQuery(value, true)));
(value === true ? '' : '=' + encodeUriQuery(value, true)));
}
}
});
return parts.length ? parts.join('&') : '';

View File

@@ -491,6 +491,14 @@ describe('angular', function() {
expect(toKeyValue({key: [323,'value',true, 1234]})).
toEqual('key=323&key=value&key&key=1234');
});
it('should not serialize null values', function() {
expect(toKeyValue({nullKey: null, key: 'value'})).toEqual('key=value');
});
it('should not serialize undefined', function() {
expect(toKeyValue({undefinedKey: undefined, key: 'value'})).toEqual('key=value');
});
});