diff --git a/render/render.js b/render/render.js index c1829164..29fc9b7d 100644 --- a/render/render.js +++ b/render/render.js @@ -337,11 +337,11 @@ module.exports = function($window) { } if (vnode.attrs && vnode.attrs.onbeforeremove) { expected++ - vnode.attrs.onbeforeremove.call(vnode, vnode, callback) + vnode.attrs.onbeforeremove.call(vnode.state, vnode, callback) } if (typeof vnode.tag !== "string" && vnode.tag.onbeforeremove) { expected++ - vnode.tag.onbeforeremove.call(vnode, vnode, callback) + vnode.tag.onbeforeremove.call(vnode.state, vnode, callback) } if (expected > 0) return } diff --git a/render/tests/test-onbeforeremove.js b/render/tests/test-onbeforeremove.js index a289b055..e0bac902 100644 --- a/render/tests/test-onbeforeremove.js +++ b/render/tests/test-onbeforeremove.js @@ -35,13 +35,17 @@ o.spec("onbeforeremove", function() { o(update.callCount).equals(0) }) 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, []) function remove(node, complete) { o(node).equals(vnode) + o(this).equals(vnode.state) o(root.childNodes.length).equals(1) o(root.firstChild).equals(vnode.dom)