diff options
| author | Rhys Brett-bowen | 2013-11-18 10:02:55 -0500 | 
|---|---|---|
| committer | Igor Minar | 2013-12-16 10:37:18 -0800 | 
| commit | cbb3ce2c309052b951d0cc87e4c6daa9c48a3dd8 (patch) | |
| tree | e08b17b430eaa71b9c2ba149d94dcd4addbd5b77 | |
| parent | 45af02de0457881f269b52d6c3f0ed58da53cfac (diff) | |
| download | angular.js-cbb3ce2c309052b951d0cc87e4c6daa9c48a3dd8.tar.bz2 | |
fix(ngRepeat): allow multiline expressions
allow and pass through new line characters when checking passed in expression
Closes #5000
| -rw-r--r-- | src/ng/directive/ngRepeat.js | 2 | ||||
| -rw-r--r-- | test/ng/directive/ngRepeatSpec.js | 16 | 
2 files changed, 17 insertions, 1 deletions
| diff --git a/src/ng/directive/ngRepeat.js b/src/ng/directive/ngRepeat.js index 86874a41..0a2673ff 100644 --- a/src/ng/directive/ngRepeat.js +++ b/src/ng/directive/ngRepeat.js @@ -203,7 +203,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {      $$tlb: true,      link: function($scope, $element, $attr, ctrl, $transclude){          var expression = $attr.ngRepeat; -        var match = expression.match(/^\s*(.+)\s+in\s+(.*?)\s*(\s+track\s+by\s+(.+)\s*)?$/), +        var match = expression.match(/^\s*(.+)\s+in\s+([\r\n\s\S]*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),            trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,            lhs, rhs, valueIdentifier, keyIdentifier,            hashFnLocals = {$id: hashKey}; diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js index bdc0b8f5..2d70d4a4 100644 --- a/test/ng/directive/ngRepeatSpec.js +++ b/test/ng/directive/ngRepeatSpec.js @@ -177,6 +177,22 @@ describe('ngRepeat', function() {      }); +    it('should allow expressions over multiple lines', function() { +      scope.isTrue = function() { +        return true; +      }; +      element = $compile( +          '<ul>' + +            '<li ng-repeat="item in items\n' + +            '| filter:isTrue">{{item.name}}</li>' + +          '</ul>')(scope); +      scope.items = [{name: 'igor'}]; +      scope.$digest(); + +      expect(element.find('li').text()).toBe('igor'); +    }); + +      it('should track using provided function when a filter is present', function() {        scope.newArray = function (items) {          var newArray = []; | 
