From c92e24b7e1c8cd102668a7ce0860312d7a06965d Mon Sep 17 00:00:00 2001 From: Pat Cavit Date: Fri, 5 Aug 2016 14:03:34 -0700 Subject: [PATCH] render clears non-mithril dom nodes --- api/mount.js | 1 - render/render.js | 7 ++++++- render/tests/index.html | 1 + render/tests/test-render.js | 24 ++++++++++++++++++++++++ 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 render/tests/test-render.js diff --git a/api/mount.js b/api/mount.js index cc16c81f..0465c4c7 100644 --- a/api/mount.js +++ b/api/mount.js @@ -1,7 +1,6 @@ "use strict" var Vnode = require("../render/vnode") -var coreRenderer = require("../render/render") var autoredraw = require("../api/autoredraw") var dummy = {view: function() {}} diff --git a/render/render.js b/render/render.js index 906291cb..5a83c388 100644 --- a/render/render.js +++ b/render/render.js @@ -514,7 +514,12 @@ module.exports = function($window) { function render(dom, vnodes) { var hooks = [] var active = $doc.activeElement - if (dom.vnodes == null) dom.vnodes = [] + + // First time rendering into a node clears it out + if (dom.vnodes == null) { + dom.vnodes = [] + dom.textContent = ""; + } if (!(vnodes instanceof Array)) vnodes = [vnodes] updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), hooks, null, undefined) diff --git a/render/tests/index.html b/render/tests/index.html index 9c58d56b..2b4e8542 100644 --- a/render/tests/index.html +++ b/render/tests/index.html @@ -38,6 +38,7 @@ + diff --git a/render/tests/test-render.js b/render/tests/test-render.js new file mode 100644 index 00000000..60823166 --- /dev/null +++ b/render/tests/test-render.js @@ -0,0 +1,24 @@ +"use strict" + +var o = require("../../ospec/ospec") +var domMock = require("../../test-utils/domMock") +var vdom = require("../../render/render") + +o.spec("render", function() { + var $window, root, render + o.beforeEach(function() { + $window = domMock() + root = $window.document.createElement("div") + render = vdom($window).render + }) + + o("overwrites existing content", function() { + var vnodes = [{tag: "a", text: null}] + + root.appendChild($window.document.createElement("div")); + + render(root, vnodes) + + o(root.childNodes.length).equals(1) + }) +})