Skip to content
This repository has been archived by the owner on Apr 12, 2024. It is now read-only.

Commit

Permalink
fix(angular.toJson): only strip properties beginning with $$, not $
Browse files Browse the repository at this point in the history
BREAKING CHANGE:

If you expected `toJson` to strip these types of properties before,
you will have to manually do this yourself now.
  • Loading branch information
rodyhaddad authored and btford committed Jun 4, 2014
1 parent 8c02a49 commit c054288
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/Angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -975,7 +975,7 @@ function bind(self, fn) {
function toJsonReplacer(key, value) {
var val = value;

if (typeof key === 'string' && key.charAt(0) === '$') {
if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {
val = undefined;
} else if (isWindow(value)) {
val = '$WINDOW';
Expand All @@ -996,7 +996,7 @@ function toJsonReplacer(key, value) {
* @function
*
* @description
* Serializes input into a JSON-formatted string. Properties with leading $ characters will be
* Serializes input into a JSON-formatted string. Properties with leading $$ characters will be
* stripped since angular uses this notation internally.
*
* @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.
Expand Down
9 changes: 7 additions & 2 deletions test/AngularSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -1131,8 +1131,13 @@ describe('angular', function() {
});


it('should not serialize properties starting with $', function() {
expect(toJson({$few: 'v', $$some:'value'}, false)).toEqual('{}');
it('should not serialize properties starting with $$', function() {
expect(toJson({$$some:'value'}, false)).toEqual('{}');
});


it('should serialize properties starting with $', function() {
expect(toJson({$few: 'v'}, false)).toEqual('{"$few":"v"}');
});


Expand Down

4 comments on commit c054288

@ashutoshparmarQT
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello
Since this commit allows to serialize properties which starts with $ but due to this we are facing some issue while submitted for data is binded on server Web.Api.
Before this in angularJs 1.2 it was working fine.

@gkalpak
Copy link
Member

@gkalpak gkalpak commented on c054288 Dec 7, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ashutoshparmarQT, this is a documented breaking change between v1.2.x and v1.3.x.
Sorry, if this is inconvenient, but if you need the v.1.2.x behaviour you will have to strip those properties manually.

BTW, this is documented in the 1.2 to 1.3 migration section of the Developer Guide (although the description needs to be improved).

@ashutoshparmarQT
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gkalpak Thanks.

@gkalpak
Copy link
Member

@gkalpak gkalpak commented on c054288 Dec 8, 2015

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, I added a more clear explanation (b0e7d54), so hopefully people won't be caught off-guard in the future 😃

Please sign in to comment.