render clears non-mithril dom nodes

This commit is contained in:
Pat Cavit 2016-08-05 14:03:34 -07:00
parent 5eb9c9010b
commit c92e24b7e1
4 changed files with 31 additions and 2 deletions

View file

@ -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() {}}

View file

@ -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)

View file

@ -38,6 +38,7 @@
<script src="test-input.js"></script>
<script src="test-textContent.js"></script>
<script src="test-component.js"></script>
<script src="test-render.js"></script>
<script>require("../../ospec/ospec").run()</script>
</body>

View file

@ -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)
})
})