【问题标题】:Improve the robustness of Shiny module提高 Shiny 模块的鲁棒性
【发布时间】:2016-10-01 08:01:40
【问题描述】:

我在闪亮的应用程序中遇到了一个意想不到的现象。
我已将数千行代码减少到大约 200 行,如果不破坏导致问题的模式,就无法进一步减少,见下文:

gist for minimal example

代码的意图是能够通过按钮+insertUI动态调用模块,每个模块都有通过modalDialog加载数据的实用功能。一旦“加载数据”按钮被触发,数据将被提取到 react_src()。

但是,在我的尝试中,有两个主要问题:

1) 模块在第一次触发“呼叫”按钮时工作,第二次单击“呼叫”按钮时它不会尝试正确呈现。
通过查看浏览器控制台,似乎有一些重复的绑定问题(并且为了进一步的操作而使这个应用程序崩溃),我不明白为什么会发生。
奇怪的是,如果我取消了modalDialog,直接再次点击“调用”按钮,那么第二次触发、第三次触发等就没有绑定问题了。

2)当用户点击“占位符”按钮时,下面的测试代码不起作用,它应该是一个简单的......

observe({
  req(input$mb_inputs)
  isolate({
    print(input$mb_inputs)
  })
})

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    在这里修复和解释:https://github.com/rstudio/shiny/pull/1402

    当您使用insertUI 并在插入点或附近嵌套uiOutput 时,Shiny 中存在一个低级错误。基本上,在插入 HTML 之后,Shiny 会找到附近的所有 uiOutput 元素并对其进行迭代。在嵌套uiOutput 的情况下,列表中的某些元素可能嵌套在列表中的其他元素中。这通常是可以的,但如果处理一个外部的、较早的元素会导致一个后来的内部元素从 DOM 中删除(这就是你的情况)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-04
      • 2012-12-05
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      相关资源
      最近更新 更多