aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhys Brett-bowen2013-11-18 10:02:55 -0500
committerIgor Minar2013-12-16 10:37:18 -0800
commitcbb3ce2c309052b951d0cc87e4c6daa9c48a3dd8 (patch)
treee08b17b430eaa71b9c2ba149d94dcd4addbd5b77
parent45af02de0457881f269b52d6c3f0ed58da53cfac (diff)
downloadangular.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.js2
-rw-r--r--test/ng/directive/ngRepeatSpec.js16
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 = [];