【问题标题】:RadDataForm back navigation destroys iOS source bindingRadDataForm 后退导航破坏 iOS 源绑定
【发布时间】:2020-02-26 16:01:53
【问题描述】:

我也将此作为 NativeScript 问题发布,但到目前为止似乎没有人关心那里。 我希望有人可以解决这个问题。

当导航回带有表单的组件时,RadDataForm 无法在 iOS 上正确绑定。导航回来后,您可以更改表单字段中的值,但这些值不会传播到源对象中。

复制 打开playground项目:在“test”上填一个值,点击“Test”进行验证。然后单击“下一步”导航离开。然后点击“返回”并尝试更新“test”上的值,绑定现在消失了,“Test”(或其他任何东西)将不再更新源变量的值。

预期行为 导航回表单并更改值后,应更新源变量。

示例项目 https://play.nativescript.org/?template=play-ng&id=vwLAH9&v=3

发行 Nativescript:https://github.com/NativeScript/nativescript-ui-feedback/issues/1350

【问题讨论】:

  • 奇怪的是,您的标签也不会像应有的那样通过其数据绑定实时更新。
  • 我猜所有的更改都是在区域外完成的,所以它不会实时更新。

标签: nativescript nativescript-angular


【解决方案1】:

我看了看,当卸载 DataForm 时,原生 iOS 委托被设置为 null,但它没有在加载的事件上被设置,这会在返回导航后停止表单上的事件。一个简单的解决方法是在加载的事件上设置委托。

onDataFormLoaded(event) {
    const dataForm = event.object;
    if (dataForm._ios && dataForm._nativeDelegate && !dataForm._ios.delegate) {
        dataForm._ios.delegate = dataForm._nativeDelegate;
    }
}

Updated Playground

【讨论】:

  • 好吧,这很奇怪。它在游乐场应用程序中完美运行。当我在自己的应用程序中执行此操作时,输入字段在返回表单后变得不可见(或者通过按 home 键然后 home 键两次重新打开来重新打开表单)(我仍然可以输入输入,我只是可以'在屏幕上看不到任何东西。它们仍然可以工作,并且现在具有适当的持久性)。我剥离了我的代码以与操场代码相同,但在设置委托后它仍然隐藏了字段。
  • 如果您认为这只是本地项目的问题,请分享一个 Github 示例。
  • 是的,我明白了,这有点困难,因为它是一个私有项目,而且 Git 存储库位于 Azure Devops 上。
  • 再一次,该项目可能是一个样本,足以重现问题。不必是您的原始项目。
  • 我现在设法重现了它(我添加了导致问题的 css 行与委托设置相结合):play.nativescript.org/?template=play-ng&id=vwLAH9&v=7
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多