diff options
| author | jankuca | 2013-09-23 11:24:42 -0700 | 
|---|---|---|
| committer | Vojta Jina | 2013-10-09 15:19:10 -0700 | 
| commit | 9efa46ae640cde17487c341daa9a75c0bd79da02 (patch) | |
| tree | addebed6c08a10e5f27a99140d3f5846992d43a2 /test/BinderSpec.js | |
| parent | 64fd2c421ed582c16812d164a8a6f031b8e66287 (diff) | |
| download | angular.js-9efa46ae640cde17487c341daa9a75c0bd79da02.tar.bz2 | |
feat(ngRepeat): use block separator comments
Issue: multi-elements ng-repeat (ng-repeat-start, ng-repeat-end) can contain elements with a trancluding directive. This directive changes content of the row (template) and ng-repeat does not work correctly (when removing/moving rows), because ng-repeat works with the original template (elements).
This changes ng-repeat behavior to traverse the DOM to find current elements everytime we are moving/removing rows (if the template has multiple elements).
Closes #3104
Diffstat (limited to 'test/BinderSpec.js')
| -rw-r--r-- | test/BinderSpec.js | 27 | 
1 files changed, 23 insertions, 4 deletions
| diff --git a/test/BinderSpec.js b/test/BinderSpec.js index 3c204b64..b553c68d 100644 --- a/test/BinderSpec.js +++ b/test/BinderSpec.js @@ -96,7 +96,9 @@ describe('Binder', function() {          '<ul>' +            '<!-- ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">A</li>' + +          '<!-- end ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">B</li>' + +          '<!-- end ngRepeat: item in model.items -->' +          '</ul>');      items.unshift({a: 'C'}); @@ -105,8 +107,11 @@ describe('Binder', function() {          '<ul>' +            '<!-- ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">C</li>' + +          '<!-- end ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">A</li>' + +          '<!-- end ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">B</li>' + +          '<!-- end ngRepeat: item in model.items -->' +          '</ul>');      items.shift(); @@ -115,7 +120,9 @@ describe('Binder', function() {          '<ul>' +            '<!-- ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">A</li>' + +          '<!-- end ngRepeat: item in model.items -->' +            '<li ng-bind="item.a" ng-repeat="item in model.items">B</li>' + +          '<!-- end ngRepeat: item in model.items -->' +          '</ul>');      items.shift(); @@ -134,6 +141,7 @@ describe('Binder', function() {          '<ul>' +            '<!-- ngRepeat: item in model.items -->' +            '<li ng-repeat="item in model.items"><span ng-bind="item.a">A</span></li>' + +          '<!-- end ngRepeat: item in model.items -->' +          '</ul>');    })); @@ -148,15 +156,15 @@ describe('Binder', function() {      $rootScope.items = items;      $rootScope.$apply(); -    expect(element[0].childNodes.length - 1).toEqual(0); +    expect(element[0].childNodes.length).toEqual(1);      items.name = 'misko';      $rootScope.$apply(); -    expect(element[0].childNodes.length - 1).toEqual(1); +    expect(element[0].childNodes.length).toEqual(3);      delete items.name;      $rootScope.$apply(); -    expect(element[0].childNodes.length - 1).toEqual(0); +    expect(element[0].childNodes.length).toEqual(1);    }));    it('IfTextBindingThrowsErrorDecorateTheSpan', function() { @@ -223,13 +231,19 @@ describe('Binder', function() {            '<div name="a" ng-repeat="m in model">'+              '<!-- ngRepeat: i in m.item -->' +              '<ul name="a1" ng-repeat="i in m.item"></ul>'+ +            '<!-- end ngRepeat: i in m.item -->' +              '<ul name="a2" ng-repeat="i in m.item"></ul>'+ +            '<!-- end ngRepeat: i in m.item -->' +            '</div>'+ +          '<!-- end ngRepeat: m in model -->' +            '<div name="b" ng-repeat="m in model">'+              '<!-- ngRepeat: i in m.item -->' +              '<ul name="b1" ng-repeat="i in m.item"></ul>'+ +            '<!-- end ngRepeat: i in m.item -->' +              '<ul name="b2" ng-repeat="i in m.item"></ul>'+ +            '<!-- end ngRepeat: i in m.item -->' +            '</div>' + +          '<!-- end ngRepeat: m in model -->' +          '</div>');    })); @@ -306,15 +320,18 @@ describe('Binder', function() {          '<div ng-repeat="i in [0,1]" ng-class-even="\'e\'" ng-class-odd="\'o\'"></div>' +        '</div>')($rootScope);      $rootScope.$apply(); +      var d1 = jqLite(element[0].childNodes[1]); -    var d2 = jqLite(element[0].childNodes[2]); +    var d2 = jqLite(element[0].childNodes[3]);      expect(d1.hasClass('o')).toBeTruthy();      expect(d2.hasClass('e')).toBeTruthy();      expect(sortedHtml(element)).toBe(         '<div>' +          '<!-- ngRepeat: i in [0,1] -->' +          '<div class="o" ng-class-even="\'e\'" ng-class-odd="\'o\'" ng-repeat="i in [0,1]"></div>' + +        '<!-- end ngRepeat: i in [0,1] -->' +          '<div class="e" ng-class-even="\'e\'" ng-class-odd="\'o\'" ng-repeat="i in [0,1]"></div>' + +        '<!-- end ngRepeat: i in [0,1] -->' +          '</div>');    })); @@ -420,7 +437,9 @@ describe('Binder', function() {          '<ul>' +            '<!-- ngRepeat: (k,v) in {a:0,b:1} -->' +            '<li ng-bind=\"k + v\" ng-repeat="(k,v) in {a:0,b:1}">a0</li>' + +          '<!-- end ngRepeat: (k,v) in {a:0,b:1} -->' +            '<li ng-bind=\"k + v\" ng-repeat="(k,v) in {a:0,b:1}">b1</li>' + +          '<!-- end ngRepeat: (k,v) in {a:0,b:1} -->' +          '</ul>');    })); | 
