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

OrderBy filter throwing an exception when property value is null #10385

Closed
cangussu opened this issue Dec 9, 2014 · 2 comments
Closed

OrderBy filter throwing an exception when property value is null #10385

cangussu opened this issue Dec 9, 2014 · 2 comments

Comments

@cangussu
Copy link

cangussu commented Dec 9, 2014

When some properties used as orderBy expression are null, a type exception is thrown. It seems to affect 1.3.6 but not 1.3.5 version.

This plunker is the same one from orderBy documentation, except the null values for age property:
http://plnkr.co/k140lCbBrfzxLZhhky9d

TypeError: Cannot read property 'valueOf' of null
at compare (http://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.js:17584:24)

@caitp
Copy link
Contributor

caitp commented Dec 9, 2014

oh god damnit. that's my bad, will submit a fix.

@caitp caitp self-assigned this Dec 9, 2014
@pkozlowski-opensource pkozlowski-opensource added this to the 1.3.7 milestone Dec 9, 2014
caitp added a commit to caitp/angular.js that referenced this issue Dec 9, 2014
8bfeddb added changes to make relational operator work as it
normally would in JS --- unfortunately, this broke due to my failure to account for typeof null
being "object".

This refactoring attempts to convert object values to primitives still, in a fashion similar to
the SortCompare (and subsequently the ToString() algorithm) from ES, in order to account for `null`
and also simplify code to some degree.

BREAKING CHANGE:

Previously, if either value being compared in the orderBy comparator was null or undefined, the
order would not change. Now, this order behaves more like Array.prototype.sort, which by default
pushes `null` behind objects, due to `n` occurring after `[` (the first characters of their
stringified forms) in ASCII / Unicode. If `toString` is customized, or does not exist, the
behaviour is undefined.

Closes angular#10385
caitp added a commit to caitp/angular.js that referenced this issue Dec 9, 2014
8bfeddb added changes to make relational operator work as it
normally would in JS --- unfortunately, this broke due to my failure to account for typeof null
being "object".

This refactoring attempts to convert object values to primitives still, in a fashion similar to
the SortCompare (and subsequently the ToString() algorithm) from ES, in order to account for `null`
and also simplify code to some degree.

BREAKING CHANGE:

Previously, if either value being compared in the orderBy comparator was null or undefined, the
order would not change. Now, this order behaves more like Array.prototype.sort, which by default
pushes `null` behind objects, due to `n` occurring after `[` (the first characters of their
stringified forms) in ASCII / Unicode. If `toString` is customized, or does not exist, the
behaviour is undefined.

Closes angular#10385
@caitp caitp closed this as completed in a097aa9 Dec 9, 2014
@nperrier
Copy link

Thank you!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants