From 1fb41206e0a58ac179356f403b5096e19780da41 Mon Sep 17 00:00:00 2001 From: rex Date: Fri, 16 Nov 2018 16:03:57 +0800 Subject: [PATCH] feat(Dialog): add new prop context @rex-zsd (#912) --- packages/dialog/README.md | 1 + packages/dialog/dialog.ts | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/dialog/README.md b/packages/dialog/README.md index daec61a8..4d3f38b2 100644 --- a/packages/dialog/README.md +++ b/packages/dialog/README.md @@ -137,6 +137,7 @@ Page({ | overlay | 是否展示蒙层 | `Boolean` | `true` | | closeOnClickOverlay | 点击蒙层时是否关闭弹窗 | `Boolean` | `false` | | asyncClose | 是否异步关闭弹窗,开启后需要手动控制弹窗的关闭 | `Boolean` | `false` | +| context | 选择器的选择范围,可以传入自定义组件的 this 作为上下文 | `Object` | 当前页面 | ### API diff --git a/packages/dialog/dialog.ts b/packages/dialog/dialog.ts index 50e01d1d..d88e77f1 100644 --- a/packages/dialog/dialog.ts +++ b/packages/dialog/dialog.ts @@ -5,6 +5,7 @@ type DialogOptions = { show?: boolean; title?: string; zIndex?: number; + context?: any; message?: string; overlay?: boolean; selector?: string; @@ -30,12 +31,15 @@ interface Dialog { currentOptions?: DialogOptions; } +function getContext() { + const pages = getCurrentPages(); + return pages[pages.length - 1]; +} + const Dialog: Dialog = options => { return new Promise((resolve, reject) => { - const pages = getCurrentPages(); - const ctx = pages[pages.length - 1]; - - const dialog = ctx.selectComponent(options.selector); + const context = options.context || getContext(); + const dialog = context.selectComponent(options.selector); delete options.selector; if (dialog) {