aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/directive/ngRepeat.js4
-rw-r--r--test/ng/directive/ngRepeatSpec.js48
2 files changed, 34 insertions, 18 deletions
diff --git a/src/ng/directive/ngRepeat.js b/src/ng/directive/ngRepeat.js
index 0a2673ff..15f86baa 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+([\r\n\s\S]*?)\s*(\s+track\s+by\s+(.+)\s*)?$/),
+ var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,
lhs, rhs, valueIdentifier, keyIdentifier,
hashFnLocals = {$id: hashKey};
@@ -215,7 +215,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
lhs = match[1];
rhs = match[2];
- trackByExp = match[4];
+ trackByExp = match[3];
if (trackByExp) {
trackByExpGetter = $parse(trackByExp);
diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js
index 2d70d4a4..638f082c 100644
--- a/test/ng/directive/ngRepeatSpec.js
+++ b/test/ng/directive/ngRepeatSpec.js
@@ -177,22 +177,6 @@ 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 = [];
@@ -354,6 +338,38 @@ describe('ngRepeat', function() {
});
+ it('should allow expressions over multiple lines', function() {
+ element = $compile(
+ '<ul>' +
+ '<li ng-repeat="item in items\n' +
+ '| filter:isTrue">{{item.name}}/</li>' +
+ '</ul>')(scope);
+
+ scope.isTrue = function() {return true;};
+ scope.items = [{name: 'igor'}, {name: 'misko'}];
+
+ scope.$digest();
+
+ expect(element.text()).toEqual('igor/misko/');
+ });
+
+
+ it('should strip white space characters correctly', function() {
+ element = $compile(
+ '<ul>' +
+ '<li ng-repeat="item \t\n \t in \n \t\n\n \nitems \t\t\n | filter:\n\n{' +
+ '\n\t name:\n\n \'ko\'\n\n}\n\n | orderBy: \t \n \'name\' \n\n' +
+ 'track \t\n by \n\n\t $index \t\n ">{{item.name}}/</li>' +
+ '</ul>')(scope);
+
+ scope.items = [{name: 'igor'}, {name: 'misko'}];
+
+ scope.$digest();
+
+ expect(element.text()).toEqual('misko/');
+ });
+
+
it('should not ngRepeat over parent properties', function() {
var Class = function() {};
Class.prototype.abc = function() {};