Skip to content
This repository has been archived by the owner on Apr 4, 2019. It is now read-only.

Add ElementMorph.prototype.clear and ElementMorph.prototype.destroy. #337

Merged
merged 1 commit into from
May 6, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions packages/dom-helper/lib/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,19 @@ function ElementMorph(element, dom, namespace) {
this.isDirty = true;
}

// renderAndCleanup calls `clear` on all items in the morph map
// just before calling `destroy` on the morph.
//
// As a future refactor this could be changed to set the property
// back to its original/default value.
ElementMorph.prototype.clear = function() { };

ElementMorph.prototype.destroy = function() {
this.element = null;
this.dom = null;
};


/*
* A class wrapping DOM functions to address environment compatibility,
* namespaces, contextual elements for morph un-escaped content
Expand Down
4 changes: 2 additions & 2 deletions packages/dom-helper/tests/dom-helper-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ test('#setAttributeNS', function(){
// phantomjs omits the prefix, thus we can't find xlink:
ok(el.innerHTML.indexOf('href="super-fun"') > 0);
dom.setAttributeNS(node, xlinkNamespace, 'href', null);

ok(el.innerHTML.indexOf('href="null"') > 0);

});
Expand Down Expand Up @@ -559,7 +559,7 @@ test('#setProperty with namespaced attributes', function() {

test("#setProperty removes namespaced attr with undefined", function() {
var node;

node = dom.createElement('svg');
dom.setProperty(node, 'xlink:title', 'Great Title', xlinkNamespace);
dom.setProperty(node, 'xlink:title', undefined, xlinkNamespace);
Expand Down
33 changes: 33 additions & 0 deletions packages/dom-helper/tests/element-morph-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import DOMHelper from "../dom-helper";

var dom;
QUnit.module('DOM Helper: ElementMorph', {
beforeEach: function() {
dom = new DOMHelper();
},

afterEach: function() {
dom = null;
}
});

test('contains a clear method', function(){
expect(0);

var el = dom.createElement('div');
var node = dom.createElementMorph(el);

node.clear();
});

test('resets element and dom on destroy', function(){
expect(2);

var el = dom.createElement('div');
var node = dom.createElementMorph(el);

node.destroy();

equal(node.element, null, 'element was reset to null');
equal(node.dom, null, 'dom was reset to null');
});