在 nativescript 中的模态中打开模态
Posted
技术标签:
【中文标题】在 nativescript 中的模态中打开模态【英文标题】:Open modal within modal in nativescript 【发布时间】:2020-07-01 04:06:59 【问题描述】:当我尝试打开一个模态时,我已经在另一个模态中。我收到一条错误消息:
ViewHierarchy: 父级已经在展示视图控制器,在显示另一个之前关闭当前的模态页面!
这是playground sample,我怎样才能在另一个模式中拥有一个模式?
复制
点击按钮(应该会弹出一个模式) 点击按钮(什么都不会发生,你会得到一个错误)预期行为
您应该会看到一个新的弹出窗口打开。
我的环境
$ tns info
✔ Getting NativeScript components versions information...
✔ Component nativescript has 6.5.0 version and is up to date.
✔ Component tns-core-modules has 6.5.0 version and is up to date.
✔ Component tns-android has 6.5.0 version and is up to date.
✔ Component tns-ios has 6.5.0 version and is up to date.
【问题讨论】:
你用什么设备测试它?没有发现运行 iOS 13 的 iPad 有任何问题。 @manoj ipad, ios 13.3 这是一个模拟器。我下载了操场,然后运行 tns debug ios。我没有真正的设备。 @Manoj 您是否成功重现了该问题?我添加了我的环境版本。 @Manoj 您是仅尝试使用 Playground 还是尝试构建到设备中?我还在回购中提出了一个问题,但他们似乎并不认为这是一个问题,即使它突然出现。 github.com/NativeScript/NativeScript/issues/8447 【参考方案1】:nativescript-vue 文档并不清楚如何使用嵌套模式,因为它在 @yukashima-huksay 的帖子之后得到了修复。但是 github 上有 an example 演示了它的用法。
可以使用target
选项打开辅助模式,该选项可以针对当前视图(使用this
)或元素(即this.$refs[<some element>]
)。
// this
this.$showModal(SecondaryModal, target: this );
// $refs
this.$showModal(SecondaryModal, target: this.$refs['myView'] );
【讨论】:
你也可以通过测试this.$root.nativeView.modal
is not undefined
来查看一个modal是否已经在根对象上打开。【参考方案2】:
这似乎是当前版本的NativeScript-Vue 的问题(截至今天,v2.5.0)。每次您尝试创建模态时,它都会尝试使用相同的父控制器,使用第一个模态作为第二个模态的父级将解决该问题。但是没有解决方法,要么您必须自己完全处理模式,要么对 nativescript-vue 包的源代码进行修补。否则,您可以使用 v2.3.0 来解决这个特定问题(但我不确定您在 v2.5.0 上还有哪些其他好处,您可能需要查看更改日志)。
我建议您使用 Playground 示例在 Github 存储库上提出问题并链接到此 SO 帖子,希望他们在下一个版本中修复它。
【讨论】:
以上是关于在 nativescript 中的模态中打开模态的主要内容,如果未能解决你的问题,请参考以下文章
如何在 nativescript 中显示模态视图时将窗口背景变为黑色
为啥我的 Nativescript-vue 应用程序在呈现模态之前使用硬件后退按钮时崩溃?