From c7cbd24aa335a68d582ec183b3c600b6e41ca127 Mon Sep 17 00:00:00 2001 From: jojiang Date: Fri, 23 Sep 2022 16:39:37 +0800 Subject: [PATCH] =?UTF-8?q?fix():=20target/=20targetRef=20=E8=83=BD?= =?UTF-8?q?=E5=A4=9F=E8=8E=B7=E5=8F=96=E4=BA=8B=E4=BB=B6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/internal/bindListeners.spec.ts | 17 ++++++++++++++++- .../brick-kit/src/internal/bindListeners.ts | 10 ++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/brick-kit/src/internal/bindListeners.spec.ts b/packages/brick-kit/src/internal/bindListeners.spec.ts index 8ca2d9b052..6cb5c61260 100644 --- a/packages/brick-kit/src/internal/bindListeners.spec.ts +++ b/packages/brick-kit/src/internal/bindListeners.spec.ts @@ -1041,6 +1041,7 @@ describe("bindListeners", () => { const microView = document.createElement("div") as any; const sourceElem = document.createElement("div") as any; const useBrickElem = document.createElement("div") as any; + useBrickElem.id = "useBrickEle"; tplElement.$$typeof = "custom-template"; tplElement.$$getElementByRef = (ref: string) => ref === "button" ? button : undefined; @@ -1077,6 +1078,12 @@ describe("bindListeners", () => { sourceElem, { keyWillFindTarget: [ + { + target: "<% `#${EVENT.detail.id}` %>", + properties: { + isEdit: true, + }, + }, { targetRef: '<% "button" %>', method: "forGood", @@ -1129,11 +1136,19 @@ describe("bindListeners", () => { "not-existed" ); - sourceElem.dispatchEvent(new CustomEvent("keyWillFindTarget")); + sourceElem.dispatchEvent( + new CustomEvent("keyWillFindTarget", { + detail: { + id: "useBrickEle", + }, + }) + ); expect(button.forGood).toBeCalled(); expect(button.forArray).toBeCalled(); expect(tplContext.state.getValue("myState")).toBe("initial:updated"); + expect(useBrickElem.isEdit).toBe(true); + useBrickElem.dispatchEvent( new CustomEvent("triggeredByUseBrick", { detail: "good", diff --git a/packages/brick-kit/src/internal/bindListeners.ts b/packages/brick-kit/src/internal/bindListeners.ts index 9819268ef1..a123a3859d 100644 --- a/packages/brick-kit/src/internal/bindListeners.ts +++ b/packages/brick-kit/src/internal/bindListeners.ts @@ -617,7 +617,7 @@ function customListenerFactory( ? isEvaluable(rawTarget) : isPreEvaluated(rawTarget) ) { - computedTarget = computeRealValue(rawTarget, context); + computedTarget = computeRealValue(rawTarget, { ...context, event }); } if (typeof computedTarget === "string") { if (computedTarget === "_self") { @@ -645,9 +645,11 @@ function customListenerFactory( ? isEvaluable(rawTargetRef) : isPreEvaluated(rawTargetRef) ) { - computedTargetRef = computeRealValue(rawTargetRef, context, true) as - | string - | string[]; + computedTargetRef = computeRealValue( + rawTargetRef, + { ...context, event }, + true + ) as string | string[]; } const tpl: RuntimeBrickElement = getTplContext( context.tplContextId