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

fix($parse): treat falsy values as defined in assignment expressions #14990

Closed
gkalpak opened this issue Aug 5, 2016 · 0 comments
Closed

fix($parse): treat falsy values as defined in assignment expressions #14990

gkalpak opened this issue Aug 5, 2016 · 0 comments

Comments

@gkalpak
Copy link
Member

gkalpak commented Aug 5, 2016

Do you want to request a feature or report a bug?
Bug.

What is the current behavior?
When Angular $parses an assignment expression - e.g. 'foo.toFixed = "bar"' - it treats falsy values as if they don't exist in the context and overwrites them. I.e.:

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).

// Correct (because `foo` is truthy)
scope.foo = 1;
scope.$eval('foo.toFixed = "bar"');   // --> Error, trying to create property `toFixed` on 1 (expected)
console.log(scope.foo);   // --> `1`

// Incorrect (because `foo` is falsy
scope.foo = 0;
scope.$eval('foo.toFixed = "bar"');
console.log(scope.foo);   // --> `{toFixed: 'bar'}` (unexpected)

What is the expected behavior?
Falsy values should be treated as defined (the same as truthy values).

What is the motivation / use case for changing the behavior?
Doing the right thing 😃

Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
All browsers.
I tested on Angular v1.5.8 and snapshot.

Other information (e.g. stacktraces, related issues, suggestions how to fix)
As suggested by @lgalfaso, the calls to self.not(...) should be replaced with self.notNull(...) at appropriate places (such as here and there).

@gkalpak gkalpak added this to the Backlog milestone Aug 5, 2016
@gkalpak gkalpak changed the title fix($parse): stop treating existing but falsy values as undefined in assignment expressions fix($parse): treat falsy values as defined in assignment expressions Aug 5, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 6, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 6, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 6, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 8, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Aug 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 9, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Sep 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 10, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 11, 2016
m-amr added a commit to m-amr/angular.js that referenced this issue Oct 11, 2016
ellimist pushed a commit to ellimist/angular.js that referenced this issue Mar 15, 2017
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.

1 participant