From ad89efe5926f2e261bb0dc0cd1cfe690f74571b2 Mon Sep 17 00:00:00 2001 From: Chad Hietala Date: Wed, 7 Oct 2015 11:57:22 -0700 Subject: [PATCH] [PERF] Don't Attempt To Sanitive Unsanitizeable This adds an identity check for falsy values before the value is sanitized. Currently we do work to sanitize things like `undefined`. --- packages/morph-attr/lib/main.js | 2 +- packages/morph-attr/tests/attr-morph-test.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/morph-attr/lib/main.js b/packages/morph-attr/lib/main.js index 48f39332..792b3120 100644 --- a/packages/morph-attr/lib/main.js +++ b/packages/morph-attr/lib/main.js @@ -110,7 +110,7 @@ AttrMorph.prototype.setContent = function (value) { if (this.lastValue === value) { return; } this.lastValue = value; - if (this.escaped) { + if (this.escaped && value) { var sanitized = sanitizeAttributeValue(this.domHelper, this.element, this.attrName, value); this._update(sanitized, this.namespace); } else { diff --git a/packages/morph-attr/tests/attr-morph-test.js b/packages/morph-attr/tests/attr-morph-test.js index 7284f5b2..34db1983 100644 --- a/packages/morph-attr/tests/attr-morph-test.js +++ b/packages/morph-attr/tests/attr-morph-test.js @@ -17,6 +17,20 @@ test("can update a dom node", function(){ equal(element.getAttribute('id'), 'twang', 'id attribute is set'); }); +test("setting content to undefined calls _update with undefiend", function(){ + var element = domHelper.createElement('div'); + var morph = domHelper.createAttrMorph(element, 'id'); + var update = morph._setContent; + var calledWith; + morph.setContent(undefined); + morph._update = function(value) { + calledWith = value; + return update.apply(morph, arguments); + }; + ok(calledWith === undefined); + equal(element.id, ''); +}); + test("can clear", function(){ expect(0); var element = domHelper.createElement('div');