render clears non-mithril dom nodes
This commit is contained in:
parent
5eb9c9010b
commit
c92e24b7e1
4 changed files with 31 additions and 2 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
"use strict"
|
"use strict"
|
||||||
|
|
||||||
var Vnode = require("../render/vnode")
|
var Vnode = require("../render/vnode")
|
||||||
var coreRenderer = require("../render/render")
|
|
||||||
var autoredraw = require("../api/autoredraw")
|
var autoredraw = require("../api/autoredraw")
|
||||||
var dummy = {view: function() {}}
|
var dummy = {view: function() {}}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -514,7 +514,12 @@ module.exports = function($window) {
|
||||||
function render(dom, vnodes) {
|
function render(dom, vnodes) {
|
||||||
var hooks = []
|
var hooks = []
|
||||||
var active = $doc.activeElement
|
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]
|
if (!(vnodes instanceof Array)) vnodes = [vnodes]
|
||||||
updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), hooks, null, undefined)
|
updateNodes(dom, dom.vnodes, Vnode.normalizeChildren(vnodes), hooks, null, undefined)
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
<script src="test-input.js"></script>
|
<script src="test-input.js"></script>
|
||||||
<script src="test-textContent.js"></script>
|
<script src="test-textContent.js"></script>
|
||||||
<script src="test-component.js"></script>
|
<script src="test-component.js"></script>
|
||||||
|
<script src="test-render.js"></script>
|
||||||
|
|
||||||
<script>require("../../ospec/ospec").run()</script>
|
<script>require("../../ospec/ospec").run()</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
24
render/tests/test-render.js
Normal file
24
render/tests/test-render.js
Normal 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)
|
||||||
|
})
|
||||||
|
})
|
||||||
Loading…
Add table
Add a link
Reference in a new issue