diff options
| -rw-r--r-- | src/ng/parse.js | 2 | ||||
| -rw-r--r-- | test/ng/parseSpec.js | 11 | 
2 files changed, 11 insertions, 2 deletions
| diff --git a/src/ng/parse.js b/src/ng/parse.js index 1bd9b0e4..b5adf7e9 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -707,7 +707,7 @@ Parser.prototype = {      var getter = getterFn(field, this.options, this.text);      return extend(function(scope, locals, self) { -      return getter(self || object(scope, locals), locals); +      return getter(self || object(scope, locals));      }, {        assign: function(scope, value, locals) {          return setter(object(scope, locals), field, value, parser.text, parser.options); diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 7d4642d1..24f5c950 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -358,7 +358,7 @@ describe('parser', function() {          forEach([2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 42, 99], function(pathLength) {            it('should resolve nested paths of length ' + pathLength, function() {              // Create a nested object {x2: {x3: {x4: ... {x[n]: 42} ... }}}. -            var obj = 42; +            var obj = 42, locals = {};              for (var i = pathLength; i >= 2; i--) {                var newObj = {};                newObj['x' + i] = obj; @@ -371,6 +371,8 @@ describe('parser', function() {                path += '.x' + i;              }              expect(scope.$eval(path)).toBe(42); +            locals['x' + pathLength] = 'not 42' +            expect(scope.$eval(path, locals)).toBe(42);            });          }); @@ -938,6 +940,13 @@ describe('parser', function() {              expect($parse('a.b')({a: {b: 0}}, {a: null})).toEqual(undefined);              expect($parse('a.b.c')({a: null}, {a: {b: {c: 1}}})).toEqual(1);            })); + +          it('should not use locals to resolve object properties', inject(function($parse) { +            expect($parse('a[0].b')({a: [ {b : 'scope'} ]}, {b : 'locals'})).toBe('scope'); +            expect($parse('a[0]["b"]')({a: [ {b : 'scope'} ]}, {b : 'locals'})).toBe('scope'); +            expect($parse('a[0][0].b')({a: [[{b : 'scope'}]]}, {b : 'locals'})).toBe('scope'); +            expect($parse('a[0].b.c')({a: [ {b: {c: 'scope'}}] }, {b : {c: 'locals'} })).toBe('scope'); +          }));          });          describe('literal', function() { | 
