mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
fix(collectionRepeat): remove elements at correct time when leaving page
This commit is contained in:
@@ -48,14 +48,7 @@ function($cacheFactory, $parse, $rootScope) {
|
||||
destroy: function() {
|
||||
this.dimensions.length = 0;
|
||||
this.data = null;
|
||||
forEach(this.backupItemsArray, function(item) {
|
||||
this.destroyItem(item);
|
||||
}, this);
|
||||
this.backupItemsArray.length = 0;
|
||||
|
||||
forEach(this.attachedItems, function(item, key) {
|
||||
this.destroyItem(item);
|
||||
}, this);
|
||||
this.attachedItems = {};
|
||||
},
|
||||
calculateDataDimensions: function() {
|
||||
|
||||
@@ -78,9 +78,10 @@ function($rootScope, $timeout) {
|
||||
|
||||
CollectionRepeatManager.prototype = {
|
||||
destroy: function() {
|
||||
for (var i in this.renderedItems) {
|
||||
this.removeItem(i);
|
||||
}
|
||||
this.renderedItems = {};
|
||||
this.render = angular.noop;
|
||||
this.calculateDimensions = angular.noop;
|
||||
this.dimensions = [];
|
||||
},
|
||||
|
||||
/*
|
||||
|
||||
@@ -70,20 +70,6 @@ describe('$collectionDataSource service', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('.destroy() should cleanup dimensions backupItemsArray and attachedItems', function() {
|
||||
var source = setup();
|
||||
source.dimensions = [1,2,3];
|
||||
source.attachedItems = {0: 'a'};
|
||||
source.backupItemsArray = ['b'];
|
||||
spyOn(source, 'destroyItem');
|
||||
source.destroy();
|
||||
expect(source.dimensions.length).toBe(0);
|
||||
expect(source.destroyItem).toHaveBeenCalledWith('a');
|
||||
expect(source.destroyItem).toHaveBeenCalledWith('b');
|
||||
expect(source.attachedItems).toEqual({});
|
||||
expect(source.backupItemsArray).toEqual([]);
|
||||
});
|
||||
|
||||
it('.calculateDataDimensions()', function() {
|
||||
function widthGetter(scope, locals) {
|
||||
return locals.$index + locals.item + 'w';
|
||||
|
||||
@@ -168,15 +168,6 @@ describe('collectionRepeatManager service', function() {
|
||||
|
||||
});
|
||||
|
||||
it('.destroy() should remove items', function() {
|
||||
var manager = setup();
|
||||
spyOn(manager, 'removeItem');
|
||||
manager.renderedItems = { '1': true, '2': true };
|
||||
manager.destroy();
|
||||
expect(manager.removeItem).toHaveBeenCalledWith('1');
|
||||
expect(manager.removeItem).toHaveBeenCalledWith('2');
|
||||
});
|
||||
|
||||
describe('.calculateDimensions()', function() {
|
||||
it('should work with 1 item per space', function() {
|
||||
var manager = setup();
|
||||
|
||||
Reference in New Issue
Block a user