Merge branch 'next' into components
This commit is contained in:
commit
c52060a670
2 changed files with 42 additions and 2 deletions
|
|
@ -169,6 +169,7 @@ var m = (function app(window, undefined) {
|
||||||
for (var prop in existing) actions.push(existing[prop])
|
for (var prop in existing) actions.push(existing[prop])
|
||||||
var changes = actions.sort(sortChanges);
|
var changes = actions.sort(sortChanges);
|
||||||
var newCached = new Array(cached.length)
|
var newCached = new Array(cached.length)
|
||||||
|
newCached.nodes = []
|
||||||
|
|
||||||
for (var i = 0, change; change = changes[i]; i++) {
|
for (var i = 0, change; change = changes[i]; i++) {
|
||||||
if (change.action === DELETION) {
|
if (change.action === DELETION) {
|
||||||
|
|
@ -180,6 +181,7 @@ var m = (function app(window, undefined) {
|
||||||
dummy.key = data[change.index].attrs.key;
|
dummy.key = data[change.index].attrs.key;
|
||||||
parentElement.insertBefore(dummy, parentElement.childNodes[change.index] || null);
|
parentElement.insertBefore(dummy, parentElement.childNodes[change.index] || null);
|
||||||
newCached.splice(change.index, 0, {attrs: {key: data[change.index].attrs.key}, nodes: [dummy]})
|
newCached.splice(change.index, 0, {attrs: {key: data[change.index].attrs.key}, nodes: [dummy]})
|
||||||
|
newCached.nodes[change.index] = dummy
|
||||||
}
|
}
|
||||||
|
|
||||||
if (change.action === MOVE) {
|
if (change.action === MOVE) {
|
||||||
|
|
@ -187,16 +189,16 @@ var m = (function app(window, undefined) {
|
||||||
parentElement.insertBefore(change.element, parentElement.childNodes[change.index] || null)
|
parentElement.insertBefore(change.element, parentElement.childNodes[change.index] || null)
|
||||||
}
|
}
|
||||||
newCached[change.index] = cached[change.from]
|
newCached[change.index] = cached[change.from]
|
||||||
|
newCached.nodes[change.index] = change.element
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (var i = 0, len = unkeyed.length; i < len; i++) {
|
for (var i = 0, len = unkeyed.length; i < len; i++) {
|
||||||
var change = unkeyed[i];
|
var change = unkeyed[i];
|
||||||
parentElement.insertBefore(change.element, parentElement.childNodes[change.index] || null);
|
parentElement.insertBefore(change.element, parentElement.childNodes[change.index] || null);
|
||||||
newCached[change.index] = cached[change.index]
|
newCached[change.index] = cached[change.index]
|
||||||
|
newCached.nodes[change.index] = change.element
|
||||||
}
|
}
|
||||||
cached = newCached;
|
cached = newCached;
|
||||||
cached.nodes = new Array(parentElement.childNodes.length);
|
|
||||||
for (var i = 0, child; child = parentElement.childNodes[i]; i++) cached.nodes[i] = child
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//end key algorithm
|
//end key algorithm
|
||||||
|
|
|
||||||
|
|
@ -554,6 +554,44 @@ function testMithril(mock) {
|
||||||
|
|
||||||
return initCount == 1
|
return initCount == 1
|
||||||
})
|
})
|
||||||
|
test(function() {
|
||||||
|
var root = mock.document.createElement("div")
|
||||||
|
|
||||||
|
var dom = mock.document.createElement("div")
|
||||||
|
|
||||||
|
var show = true
|
||||||
|
|
||||||
|
var module = {
|
||||||
|
view: function() {
|
||||||
|
return [
|
||||||
|
m(".foo", {key: 1, config: test, onclick: function() {show = !show}}),
|
||||||
|
show ? m(".bar", {key: 2}) : null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function test(el, init) {
|
||||||
|
if (!init) {
|
||||||
|
root.appendChild(dom)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m.module(root, module)
|
||||||
|
|
||||||
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
||||||
|
show = false
|
||||||
|
m.redraw()
|
||||||
|
|
||||||
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
||||||
|
show = true
|
||||||
|
m.redraw()
|
||||||
|
|
||||||
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
||||||
|
return root.childNodes.length == 3
|
||||||
|
})
|
||||||
m.redraw.strategy(undefined) //teardown for m.module tests
|
m.redraw.strategy(undefined) //teardown for m.module tests
|
||||||
|
|
||||||
//m.withAttr
|
//m.withAttr
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue