Merge pull request #59 from sanderhahn/master

only update input.value on change
This commit is contained in:
Leo Horie 2014-04-22 16:07:36 -04:00
commit 22730c5d92

View file

@ -73,7 +73,7 @@ Mithril = m = new function app(window) {
node = namespace === undefined ? window.document.createElement(data.tag) : window.document.createElementNS(namespace, data.tag)
cached = {
tag: data.tag,
attrs: setAttributes(node, data.attrs, {}, namespace),
attrs: setAttributes(node, data.tag, data.attrs, {}, namespace),
children: build(node, data.children, cached.children, true, 0, namespace),
nodes: [node]
}
@ -81,7 +81,7 @@ Mithril = m = new function app(window) {
}
else {
node = cached.nodes[0]
setAttributes(node, data.attrs, cached.attrs, namespace)
setAttributes(node, data.tag, data.attrs, cached.attrs, namespace)
cached.children = build(node, data.children, cached.children, false, 0, namespace)
cached.nodes.intact = true
if (shouldReattach === true) parent.insertBefore(node, parent.childNodes[index] || null)
@ -124,7 +124,7 @@ Mithril = m = new function app(window) {
return cached
}
function setAttributes(node, dataAttrs, cachedAttrs, namespace) {
function setAttributes(node, tag, dataAttrs, cachedAttrs, namespace) {
for (var attrName in dataAttrs) {
var dataAttr = dataAttrs[attrName]
var cachedAttr = cachedAttrs[attrName]
@ -144,6 +144,11 @@ Mithril = m = new function app(window) {
else if (attrName === "className") node.setAttribute("class", dataAttr)
else node.setAttribute(attrName, dataAttr)
}
else if (attrName === "value" && tag === "input") {
if (node[attrName] !== dataAttr) {
node.setAttribute(attrName, dataAttr)
}
}
else if (attrName in node) node[attrName] = dataAttr
else node.setAttribute(attrName, dataAttr)
}