提交 8cc96629 编写于 作者: 雪洛's avatar 雪洛

fix: service removeAndInvokeRemoveHook recursively askId: 89818

上级 1ab2915e
...@@ -6071,6 +6071,7 @@ function createPatchFunction (backend) { ...@@ -6071,6 +6071,7 @@ function createPatchFunction (backend) {
function removeAndInvokeRemoveHook (vnode, rm) { function removeAndInvokeRemoveHook (vnode, rm) {
if (isDef(rm) || isDef(vnode.data)) { if (isDef(rm) || isDef(vnode.data)) {
var i; var i;
var children;
var listeners = cbs.remove.length + 1; var listeners = cbs.remove.length + 1;
if (isDef(rm)) { if (isDef(rm)) {
// we have a recursively passed down rm callback // we have a recursively passed down rm callback
...@@ -6083,6 +6084,13 @@ function createPatchFunction (backend) { ...@@ -6083,6 +6084,13 @@ function createPatchFunction (backend) {
// recursively invoke hooks on child component root node // recursively invoke hooks on child component root node
if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
removeAndInvokeRemoveHook(i, rm); removeAndInvokeRemoveHook(i, rm);
} else if(isDef(children = vnode.children)) {
// service层获取不到componentInstance,暂用此方式递归
for (var i = 0; i < children.length; i++) {
if (children[i].tag) {
removeAndInvokeRemoveHook(children[i]);
}
}
} }
for (i = 0; i < cbs.remove.length; ++i) { for (i = 0; i < cbs.remove.length; ++i) {
cbs.remove[i](vnode, rm); cbs.remove[i](vnode, rm);
...@@ -6779,7 +6787,7 @@ function updateDOMListeners (oldVnode, vnode) { ...@@ -6779,7 +6787,7 @@ function updateDOMListeners (oldVnode, vnode) {
var on = vnode.data.on || {}; var on = vnode.data.on || {};
var oldOn = oldVnode.data.on || {}; var oldOn = oldVnode.data.on || {};
target$1 = vnode.elm; target$1 = vnode.elm;
// fixed by xxxxxx 存储 vd // fixed by xxxxxx 存储 vd
target$1._$vd = vnode.context._$vd; target$1._$vd = vnode.context._$vd;
var context = vnode.context; var context = vnode.context;
......
...@@ -5289,6 +5289,7 @@ function createPatchFunction (backend) { ...@@ -5289,6 +5289,7 @@ function createPatchFunction (backend) {
function removeAndInvokeRemoveHook (vnode, rm) { function removeAndInvokeRemoveHook (vnode, rm) {
if (isDef(rm) || isDef(vnode.data)) { if (isDef(rm) || isDef(vnode.data)) {
var i; var i;
var children;
var listeners = cbs.remove.length + 1; var listeners = cbs.remove.length + 1;
if (isDef(rm)) { if (isDef(rm)) {
// we have a recursively passed down rm callback // we have a recursively passed down rm callback
...@@ -5301,6 +5302,13 @@ function createPatchFunction (backend) { ...@@ -5301,6 +5302,13 @@ function createPatchFunction (backend) {
// recursively invoke hooks on child component root node // recursively invoke hooks on child component root node
if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) { if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {
removeAndInvokeRemoveHook(i, rm); removeAndInvokeRemoveHook(i, rm);
} else if(isDef(children = vnode.children)) {
// service层获取不到componentInstance,暂用此方式递归
for (var i = 0; i < children.length; i++) {
if (children[i].tag) {
removeAndInvokeRemoveHook(children[i]);
}
}
} }
for (i = 0; i < cbs.remove.length; ++i) { for (i = 0; i < cbs.remove.length; ++i) {
cbs.remove[i](vnode, rm); cbs.remove[i](vnode, rm);
...@@ -5928,7 +5936,7 @@ function updateDOMListeners (oldVnode, vnode) { ...@@ -5928,7 +5936,7 @@ function updateDOMListeners (oldVnode, vnode) {
var on = vnode.data.on || {}; var on = vnode.data.on || {};
var oldOn = oldVnode.data.on || {}; var oldOn = oldVnode.data.on || {};
target$1 = vnode.elm; target$1 = vnode.elm;
// fixed by xxxxxx 存储 vd // fixed by xxxxxx 存储 vd
target$1._$vd = vnode.context._$vd; target$1._$vd = vnode.context._$vd;
var context = vnode.context; var context = vnode.context;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册