fix(collectionRepeat): properly display collection repeat inside a modal

This commit is contained in:
Perry Govier
2014-07-24 12:44:29 -05:00
parent 4e6ba5b818
commit 1fbd3c5632
2 changed files with 23 additions and 0 deletions

View File

@@ -225,6 +225,11 @@ function($collectionRepeatManager, $collectionDataSource, $parse) {
rerender($scope.$eval(listExpr));
}
// for lists inside a modal, recalc when the modal is shown
$scope.$on('modal.shown',function(){
onWindowResize();
});
ionic.on('resize', onWindowResize, window);
$scope.$on('$destroy', function() {

View File

@@ -152,6 +152,24 @@ describe('collectionRepeat directive', function() {
expect(scrollView.resize.callCount).toBe(1);
});
it('should rerender on modal popup', function() {
inject(function($rootScope) {
var el = setup('collection-repeat="item in items" collection-item-height="50"');
var scrollView = el.controller('$ionicScroll').scrollView;
spyOn(scrollView, 'resize');
dataSource.setData.reset();
repeatManager.resize.reset();
el.scope().items = [1, 2, 3];
$rootScope.$broadcast('modal.shown');
expect(dataSource.setData).toHaveBeenCalledWith(el.scope().items);
expect(repeatManager.resize.callCount).toBe(1);
expect(scrollView.resize.callCount).toBe(1);
});
});
it('$destroy', function() {
var el = setup('collection-repeat="item in items" collection-item-height="50"');
dataSource.destroy = jasmine.createSpy('dataSourceDestroy');