Merge pull request #1183 from pygy/onbeforeremove-state-vnode-done
[rewrite] Pass `vnode.state` as context to `onbeforeremove`.
This commit is contained in:
commit
20fd1b8198
2 changed files with 13 additions and 3 deletions
|
|
@ -337,11 +337,11 @@ module.exports = function($window) {
|
||||||
}
|
}
|
||||||
if (vnode.attrs && vnode.attrs.onbeforeremove) {
|
if (vnode.attrs && vnode.attrs.onbeforeremove) {
|
||||||
expected++
|
expected++
|
||||||
vnode.attrs.onbeforeremove.call(vnode, vnode, callback)
|
vnode.attrs.onbeforeremove.call(vnode.state, vnode, callback)
|
||||||
}
|
}
|
||||||
if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) {
|
if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) {
|
||||||
expected++
|
expected++
|
||||||
vnode.tag.onbeforeremove.call(vnode, vnode, callback)
|
vnode.tag.onbeforeremove.call(vnode.state, vnode, callback)
|
||||||
}
|
}
|
||||||
if (expected > 0) return
|
if (expected > 0) return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,13 +35,17 @@ o.spec("onbeforeremove", function() {
|
||||||
o(update.callCount).equals(0)
|
o(update.callCount).equals(0)
|
||||||
})
|
})
|
||||||
o("calls onbeforeremove when removing element", function(done) {
|
o("calls onbeforeremove when removing element", function(done) {
|
||||||
var vnode = {tag: "div", attrs: {onbeforeremove: remove}}
|
var vnode = {tag: "div", attrs: {
|
||||||
|
oninit: function(){vnode.state = {}},
|
||||||
|
onbeforeremove: remove
|
||||||
|
}}
|
||||||
|
|
||||||
render(root, [vnode])
|
render(root, [vnode])
|
||||||
render(root, [])
|
render(root, [])
|
||||||
|
|
||||||
function remove(node, complete) {
|
function remove(node, complete) {
|
||||||
o(node).equals(vnode)
|
o(node).equals(vnode)
|
||||||
|
o(this).equals(vnode.state)
|
||||||
o(root.childNodes.length).equals(1)
|
o(root.childNodes.length).equals(1)
|
||||||
o(root.firstChild).equals(vnode.dom)
|
o(root.firstChild).equals(vnode.dom)
|
||||||
|
|
||||||
|
|
@ -147,6 +151,7 @@ o.spec("onbeforeremove", function() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
o("does not set onbeforeremove as an event handler", function() {
|
o("does not set onbeforeremove as an event handler", function() {
|
||||||
var remove = o.spy()
|
var remove = o.spy()
|
||||||
var vnode = {tag: "div", attrs: {onbeforeremove: remove}, children: []}
|
var vnode = {tag: "div", attrs: {onbeforeremove: remove}, children: []}
|
||||||
|
|
@ -156,6 +161,7 @@ o.spec("onbeforeremove", function() {
|
||||||
o(vnode.dom.onbeforeremove).equals(undefined)
|
o(vnode.dom.onbeforeremove).equals(undefined)
|
||||||
o(vnode.dom.attributes["onbeforeremove"]).equals(undefined)
|
o(vnode.dom.attributes["onbeforeremove"]).equals(undefined)
|
||||||
})
|
})
|
||||||
|
|
||||||
o("does not recycle when there's an onbeforeremove", function() {
|
o("does not recycle when there's an onbeforeremove", function() {
|
||||||
var remove = function(vnode, done) {done()}
|
var remove = function(vnode, done) {done()}
|
||||||
var vnode = {tag: "div", key: 1, attrs: {onbeforeremove: remove}}
|
var vnode = {tag: "div", key: 1, attrs: {onbeforeremove: remove}}
|
||||||
|
|
@ -167,4 +173,8 @@ o.spec("onbeforeremove", function() {
|
||||||
|
|
||||||
o(vnode.dom).notEquals(updated.dom)
|
o(vnode.dom).notEquals(updated.dom)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
o("sets the onbeforeremove context to vnode.state", function(){
|
||||||
|
var handler = o.spy()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue