add tentative fix for #29

https://github.com/lhorie/mithril.js/issues/29

TODO: test cost of relying on native equality checks
This commit is contained in:
Leo Horie 2014-03-30 22:33:49 -04:00
parent 62eae50b20
commit 86ba3474a6
5 changed files with 7 additions and 6 deletions

View file

@ -119,14 +119,14 @@ new function(window) {
function setAttributes(node, dataAttrs, cachedAttrs) {
for (var attrName in dataAttrs) {
var dataAttr = dataAttrs[attrName]
if (!(attrName in cachedAttrs) || (cachedAttrs[attrName] !== dataAttr)) {
//if (!(attrName in cachedAttrs) || (cachedAttrs[attrName] !== dataAttr)) {
cachedAttrs[attrName] = dataAttr
if (attrName == "config") continue
if (attrName.indexOf("on") == 0 && typeof dataAttr == "function") dataAttr = autoredraw(dataAttr, node)
if (attrName == "style") for (var rule in dataAttr) node.style[rule] = dataAttr[rule]
else if (attrName in node) node[attrName] = dataAttr
else node.setAttribute(attrName, dataAttr)
}
//}
}
return cachedAttrs
}
@ -180,6 +180,7 @@ new function(window) {
var currentRoot, currentModule = {view: function() {}}, currentController = {}, now = 0, lastRedraw = 0, lastRedrawId = 0
m.module = function(root, module) {
m.startComputation()
cellCache = {}
currentRoot = root
currentModule = module
currentController = new module.controller

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -119,14 +119,14 @@ new function(window) {
function setAttributes(node, dataAttrs, cachedAttrs) {
for (var attrName in dataAttrs) {
var dataAttr = dataAttrs[attrName]
if (!(attrName in cachedAttrs) || (cachedAttrs[attrName] !== dataAttr)) {
//if (!(attrName in cachedAttrs) || (cachedAttrs[attrName] !== dataAttr)) {
cachedAttrs[attrName] = dataAttr
if (attrName == "config") continue
if (attrName.indexOf("on") == 0 && typeof dataAttr == "function") dataAttr = autoredraw(dataAttr, node)
if (attrName == "style") for (var rule in dataAttr) node.style[rule] = dataAttr[rule]
else if (attrName in node) node[attrName] = dataAttr
else node.setAttribute(attrName, dataAttr)
}
//}
}
return cachedAttrs
}